当前位置: 首页 > 工具软件 > jeasyui > 使用案例 >

jeasyUI popWindow插件,适用jeasyui1.4.x

蒋高杰
2023-12-01
 /**
 * @author GodSon
 * http://www.btboys.com
 * date 2011-5-12 12:30 version 2.1
 * @How to use
 * var path = 'page/newFile.html';
 *    var confing = {
 *        url : path,
 *        title : "标题",
 *        width : 500,
 *        height : 150,
 *        maximizable : false,
 *        buttons : [{
 *                text : '继续>>',
 *                handler : function() {
 *                    fun(GETWIN(this));
 *                }
 *        }]
 *    };
 *    var curDialogId = $.createWin(confing);
 *    销毁    
 *  $(GETWIN(curDialogId)).destroy(); 
 */
 
 /**
 * @param {Object} options
 * return windowId
 */
 (function($){
     /**
      * 创建UUID
      */
     function S4() {
         return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
     }
     /**
      * 生成windowId
      */
     function  CreateIndentityWindowId(){
         return "UUID-"+(S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
     }
     /**
      * 销毁
      */
     function destroy(target){
         $(target).dialog("destroy");
     }
     
     /**
      * 获取当前操作的window 
      *  @param target 当前窗口的windowId 或者 当前窗口中的元素(element)
      */
     function getWindow(target){
         if(typeof target == "string"){
             return document.getElementById(target);
         }else{
             return $(target).parents(".window-body");
         }
     }
     
     //入口方法
     $.createWin = function(options){
         if(!options.url && !options.content){
             $.messager.alert("提示","缺少必要参数!(url or content)");
             return false;
         }
         
         var windowId = CreateIndentityWindowId();
         
         if(options.winId){
             windowId=options.winId;
         }
         
         //如果存在buttons(请看easyui对buttons的定义),默认添加关闭按钮
         if(options.buttons){
             var closeBtn = {
                     text:'关闭',
                     handler:function(){
                         $("#"+windowId).dialog("destroy");
                     }
             };
             options.buttons.push(closeBtn);
         }
         
         options = $.extend({},$.createWin.defaults, options || {});
         
         if(options.content){
             ajaxSuccess(options.content);
         }else{
             if(!options.isIframe){
                 $.ajax({
                     url:options.url,
                     type:"POST",
                     data:options.data == null ? "" : options.data,
                     success:function(date){
                         ajaxSuccess(date);
                     },
                     error:function(XMLHttpRequest, textStatus, errorThrown){
                         $.messager.alert("提示","加载失败!\n"+textStatus+"\n"+errorThrown);
                     }
                 });
             }else{
                 ajaxSuccess();
             }
         }
         return windowId;
         
         /**
          * 页面加载成功处理
          */
         function ajaxSuccess(date){
             var dialog  = $('<div id="'+windowId+'"></div>');
             if(options.target == 'body'){
                 dialog.appendTo(options.target);
             }else{
                 options.inline = true;
                 dialog.appendTo($(options.target));
             }
             if(options.isIframe && !date){
                 $(dialog).html('<iframe width="100%" height="100%" frameborder="0" src="'+options.url+'" ></iframe>');
             }else{
                 $(dialog).html(date);
             }
             
             dialog.dialog(options);
             //给dialog增加id属性,负责右下方关闭按钮失效.
             dialog.attr("id",windowId);
             //增加初始位置设定功能.
             if (options.align) {
      var w = dialog.closest(".window");
      switch (options.align) {
      case "right":
      dialog.dialog("move", {
      left : w.parent().width() - w.width() - 10
      });
      break;
      case "tright":
      dialog.dialog("move", {
      left : w.parent().width() - w.width() - 10,
      top : 0
      });
      break;
      case "bright":
      dialog.dialog("move", {
      left : w.parent().width() - w.width() - 10,
      top : w.parent().height() - w.height() - 10
      });
      break;
      case "left":
      dialog.dialog("move", {
      left : 0
      });
      break;
      case "tleft":
      dialog.dialog("move", {
      left : 0,
      top : 0
      });
      break;
      case "bleft":
      dialog.dialog("move", {
      left : 0,
      top : w.parent().height() - w.height() - 10
      });
      break;
      case "top":
      dialog.dialog("move", {
      top : 0
      });
      break;
      case "bottom":
      dialog.dialog("move", {
      top : w.parent().height() - w.height() - 10
      });
      break;
      }
      }
             
             dialog.dialog('open');
 
             options.onComplete.call(this,windowId);                                    //创建成功后回调函数
             //可以整合fck的显示
             // options.fck:{
             //         "id":textAreaIdORtextAreaName,
             //      "height":fckHeight
             // }
//             if(options.fck){
//                 CKEDITOR.replace(options.fck.id,{
//                     height:options.fck.height
//                 });
//             }
             //可以整合KindEditor的显示
             // options.ke:{
             //         "id":textAreaId
             // }
//             if(options.ke){
//                 KE.init(options.ke);
//                 KE.create(options.ke.id);
//             }
         }
     };
     
     //关闭并销毁实体
     $.fn.destroy =function(){
         destroy(this);
     };
     
     window.GETWIN = getWindow;
     
     //默认参数
     // opetion.isIframe设置为false后,请使用用html片段做弹出窗口页面渲染,
     //提交方式为POST,如果值为true,则默认的提交方式为get,参数data将失效.
     //modified by hety on June29,2015.
     $.createWin.defaults = $.extend({},$.fn.dialog.defaults,{
             url:'',                    //窗口要加载的html片段地址
             data:'',                //可带参数,data类型为jqurey.ajax的data参数类型
             target:'body',                //指定窗口打开的区域,是一个jq的选择器,例如#id
             isIframe:false,            //如果存在url,是否在iframe里面打开url     
             zIndex: 100000,            
             height : 200,
             width : 400,
             collapsible: false,
             minimizable: false,
             maximizable: false,
             closable: true,
             modal:true,
             onClose:function(){
                 destroy(this);
             },
             onMove:function(left,top){
                 var opts = $.data(this, 'panel').options;
                 if(top < 0){
                     $(this).dialog("move",{"left":left,"top":0});
                 }else if(opts.maximized){
                     $(this).dialog("restore");
                     $(this).dialog("move",{"left":left+100,"top":top});
                 }
                 if(top > ($(opts.target).height()-20)){
                     $(this).dialog("move",{"left":left,"top":($(opts.target).height()-25)});
                 }
             },
             onComplete:function(windowId){}    //创建成功后的回调方法        
     });
 })(jQuery);
 类似资料: