001 /** 002 * @author GodSon 003 * http://www.btboys.com 004 * date 2011-4-10 21:30 005 * @How to use 006 * var path = 'page/newFile.html'; 007 * var confing = { 008 * url : path, 009 * title : 标题, 010 * width : 500, 011 * height : 150, 012 * maximizable : false, 013 * buttons : [{ 014 * text : '继续', 015 * handler : function() { 016 * fun(GETWIN(this)); 017 * } 018 * }] 019 * }; 020 * var curDialogId = $.createWin(confing); 021 * 销毁 022 * $(GETWIN(curDialogId)).destroy(); 023 */ 024 025 /** 026 * @param {Object} options 027 * return windowId 028 */ 029 (function($){ 030 /** 031 * 创建UUID 032 */ 033 functionS4() { 034 return(((1+Math.random())*0x10000)|0).toString(16).substring(1); 035 } 036 /** 037 * 生成windowId 038 */ 039 functionCreateIndentityWindowId(){ 040 returnUUID-+(S4()+S4()+-+S4()+-+S4()+-+S4()+-+S4()+S4()+S4()); 041 } 042 /** 043 * 销毁 044 */ 045 functiondestroy(target){ 046 varoptions = $(target).dialog(options); 047 if(options.fck){ 048 $(body).children(iframe).remove(); 049 KE.remove(options.fck.id); 050 } 051 if(options.ke){ 052 KE.remove(options.ke.id); 053 } 054 $(target).dialog(destroy); 055 } 056 057 /** 058 * 获取当前操作的window 059 * @param target 当前窗口的windowId 或者 当前窗口中的元素(element) 060 */ 061 functiongetWindow(target){ 062 if(typeoftarget ==string){ 063 returndocument.getElementById(target); 064 }else{ 065 return$(target).parents(.window-body); 066 } 067 } 068 069 //入口方法 070 $.createWin =function(options){ 071 if(!options.url){ 072 returnfalse; 073 } 074 075 varwindowId = CreateIndentityWindowId(); 076 077 if(options.winId){ 078 windowId=options.winId; 079 } 080 081 //如果存在buttons(请看easyui对buttons的定义),默认添加关闭按钮 082 if(options.buttons){ 083 varcloseBtn = { 084 text:'关闭', 085 handler:function(){ 086 $(#+windowId).dialog(destroy); 087 } 088 }; 089 options.buttons.push(closeBtn); 090 } 091 092 options = $.extend({},$.createWin.defaults, options || {}); 093 094 $.ajax({ 095 url:options.url, 096 type:POST, 097 data:options.data ==null?: options.data, 098 success:function(data){ 099 vardialog = $('div id='+windowId+'/div'); 100 $(dialog).html(data); 101 dialog.appendTo('body'); 102 103 dialog.dialog(options); 104 dialog.dialog('open'); 105 106 $.parser.parse(dialog); 107 options.onComplete.call(this,windowId);//创建成功后回调函数 108 //可以整合fck的显示 109 // options.fck:{ 110 // id:textAreaIdORtextAreaName, 111 // height:fckHeight 112 // } 113 if(options.fck){ 114 CKEDITOR.replace(options.fck.id,{ 115 height:options.fck.height 116 }); 117 } 118 //可以整合KindEditor的显示 119 // options.ke:{ 120 // id:textAreaId 121 // } 122 if(options.ke){ 123 KE.init(options.ke); 124 KE.create(options.ke.id); 125 } 126 }, 127 error:function(){ 128 $.messager.alert(提示,加载失败!); 129 } 130 }); 131 returnwindowId; 132 }; 133 134 //关闭并销毁实体 135 $.fn.destroy =function(){ 136 destroy(this); 137 }; 138 139 window.GETWIN = getWindow; 140 141 //默认参数 142 $.createWin.defaults = $.extend({},$.fn.dialog.defaults,{ 143 url:'',//窗口要加载的html片段地址 144 data:'',//可带参数,data类型为jqurey.ajax的data参数类型 145 zIndex: 100000, 146 height : 200, 147 width : 400, 148 collapsible:false, 149 minimizable:false, 150 maximizable:false, 151 closable:true, 152 modal:true, 153 onClose:function(){ 154 destroy(this); 155 }, 156 onComplete:function(windowId){}//创建成功后的回调方法 157 }); 158 })(jQuery);