/*!*jQuery块UI插件*版本2.42(2012年5月11日)*@需要jQuery v1.2.3或更高版本**示例位于:http://malsup.com/jquery/block/*版权所有(c)2007-2010 M.Alsup*MIT和GPL许可证下的双重许可:* http://www.opensource.org/licenses/mit-license.php* http://www.gnu.org/licenses/gpl.html**感谢Amir-Hossein Sobhi的一些杰出贡献!*/;(函数(){函数设置($){if(/1\.(0|1|2)\。(0|1|2)/.test($.fn.jquery)||/^1.1/.test{alert('blockUI需要jQuery v1.2.3或更高版本!您使用的是v'+$.fn.jQuery);回报;}$.fn美元_fadeIn=$.fn.fadeIn;var noOp=函数(){};//这一点是为了确保我们在不应该调用setExpression时不会调用setExpress(需要额外处理//Vista上的延迟userAgent字符串)var模式=document.documentMode ||0;var setExpr=$.browser.msie&&(($.browser.version<8&&!mode)||mode<8);var ie6=$.browser.msie&&/msie 6.0/.test(navigator.userAgent)&&!模式;//用于阻止/取消阻止整个页面的全局$方法$.blockUI=函数(opts){install(window,opts);};$.unblockUI=函数(opts){remove(window,opts);};//快速咆哮式通知的便捷方法(http://www.google.com/search?q=growl)$.growlUI=函数(标题、消息、超时、onClose){var$m=$('
');如果(标题)$m.append('

“+标题+”

');如果(消息)$m.append('

“+消息+”

');如果(timeout==未定义)timeout=3000;$.块UI({消息:$m,淡入淡出:700,淡出:1000,中心Y:假,timeout:timeout,showOverlay:false,onUnblock:打开关闭,css:$.blockUI.defaults.growlCSS});};//用于阻塞元素内容的插件方法$.fn.block=函数(opts){var fullOpts=$.extend({},$.blockUI.defaults,opts||{});this.each(函数(){var$el=$(本);if(fullOpts.ignoreIfBlocked和$el.data('blockUI.isBlocked'))回报;$el.unblock({fadeOut:0});});return this.each(function(){if($.css(this,'position')=='static')this.style.position=“相对”;if($.browser.msie)this.style.zoom=1;//强制“hasLayout”安装(this,opts);});};//解锁元素内容的插件方法$.fn.unblock=函数(opts){return this.each(function(){移除(this,opts);});};$.blockUI.version=2.42;//无需额外费用的第二代阻塞!//在代码中覆盖这些内容以更改默认行为和样式$.blockUI.defaults={//阻塞时显示的消息(无消息使用null)消息:'

请稍候。。。

',title:null,//title字符串;仅在主题==true时使用draggable:true,//仅在主题==true时使用(需要加载jquery-ui.js)theme:false,//设置为true以与jQuery UI主题一起使用//阻塞时消息的样式;如果您希望禁用//然后在代码中使用外部样式表://$.blockUI.defaults.css={};css(密件抄送):{填充:0,边距:0,宽度:“30%”,顶部:“40%”,左:“35%”,text对齐:“居中”,颜色:“#000”,边框:'3px实心#aaa',backgroundColor:“#fff”,游标:'wait'},//使用主题时使用的最小样式集主题CSS:{宽度:“30%”,顶部:“40%”,左:“35%”},//覆盖样式覆盖CSS:{backgroundColor:“#000”,不透明度:0.6,游标:'wait'},//使用$.growlUI时应用的样式咆哮CSS:{宽度:'350px',顶部:“10px”,左:“”,右:“10px”,border:'无',填充:“5px”,不透明度:0.6,游标:“默认”,颜色:“#fff”,backgroundColor:“#000”,“-webkit-border-radius”:“10px”,“-moz-border-radius”:“10px”,“border-radius”:“10px”},//IE问题:HTTPS上的“about:blank”失败,javascript:false是s-l-o-w//(向Jorge H.N.de Vasconcelos致敬)iframeSrc:/^https/i.test(window.location.href|'')?'javascript:false“:”关于:空白“,//在非IE浏览器中强制使用iframe(便于阻塞applet)forceIframe:false,//块覆盖的z索引baseZ:1000,//将这些设置为true以使消息自动居中centerX:true,//<--仅影响元素块(通过上面的css控制页面块)中心Y:正确,//允许在ie6中插入主体元素;这使得阻挡看起来更好//在“短”页上。如果您希望阻止更改身高,请禁用allowBodyStretch:true,//如果希望为被阻止的内容禁用键和鼠标事件,请启用bindEvents:true,//默认为blockUI将禁止选项卡导航离开阻止内容//(如果bindEvents为true)constraintTabKey:true,//衰减时间,单位为毫秒;设置为0以禁用块上的fadeInfadeIn:200,//淡出时间,单位为毫秒;设置为0可在取消阻止时禁用淡出淡出:400,//自动解锁前等待的时间(以毫秒为单位);设置为0以禁用自动锁定超时:0,//如果不想显示覆盖,请禁用showOverlay:真,//如果为true,则当//页面阻塞焦点输入:true,//禁止在FF/Linux上使用覆盖样式(由于不透明度的性能问题)applyPlatformOpacity规则:true,//fadeIn完成且阻塞消息可见时调用的回调方法onBlock:空,//解除锁定完成时调用的回调方法;回调是//传递了已取消阻止的元素(这是页面的窗口对象//块)和传递给unblock调用的选项://onUnblock(元素,选项)onUnblock:空,//不要问;如果你真的必须知道:http://groups.google.com/group/jqueryen/browse_thread/thread/36640a8730503595/2f6a79a77a78e493#2f6a 79a77a 78e493怪癖模式偏移黑客:4,//消息块的类名blockMsgClass:'块消息',//如果它已被阻止,则忽略它(不要取消阻止并重新阻止)ignoreIfBlocked:错误};//私有数据和函数如下。。。var pageBlock=空;var pageBlockEls=[];功能安装(el,opts){var css,主题css;var full=(el==窗口);var msg=(opts&&opts.message!==未定义?opts.mMessage:未定义);opts=$.extend({},$.blockUI.defaults,opts ||{});if(opts.ignoreIfBlocked&&$(el).data('blockUI.isBlocked'))回报;opts.overlayCSS=$.extend({},$.blockUI.defaults.overlayCS,opts.overlayCSS||{});css=$.extend({},$.blockUI.defaults.css,opts.css||{});主题CSS=$.extend({},$.blockUI.defaults.themedCSS,opts.themedCSS||{});msg=msg===未定义?操作消息:消息;//删除当前块(如果有)if(完整页面块)删除(窗口,{淡出:0});//如果一个现有元素被用作阻止内容,那么我们捕获//它在DOM中的当前位置(和当前显示样式),以便我们可以恢复//当我们解锁时if(msg&&typeof msg!=“字符串”&&(msg.parentNode||msg.jquery)){var节点=消息.jquery?消息[0]:消息;var数据={};$(el).data('blockUI.history',data);data.el=节点;data.parent=节点.parentNode;data.display=节点样式显示;data.position=节点样式位置;if(数据.父项)data.parent.removeChild(节点);}$(el).data('blockUI.onUnblock',opts.onUnblock);var z=opts.baseZ;//blockUI使用3层进行阻塞,为了简单起见,它们都在每个平台上使用;//layer1是iframe层,用于抑制底层内容的渗透//layer2是覆盖层,具有不透明度和等待光标(默认情况下)//第3层是阻塞时显示的消息内容var lyr1=($.browser.msie | | opts.forceIframe)? $(''): $('');var lyr2=选项主题? $(''): $('');var lyr3,s;if(opts.theme和full){s='';}else if(opts.theme){s='';}else if(完整){s='';}其他{s='';}lyr3=$(s);//如果我们有消息,就设计它if(消息){if(opts.theme){lyr3.css(主题css);lyr3.addClass('ui-widget-content');}其他的lyr3.css(css);}//设置覆盖样式if(!opts.theme&&(!opts.applyPlatformOpacityRules||!($.browser.mozilla&&/Linux/.test(navigator.platform)))lyr2.css(opts.overlayCSS);lyr2.css('位置',完整?'固定':'绝对');//使iframe层在IE中透明if($.browser.msie||opts.forceIframe)lyr1.css(“产能”,0.0);//$([lyr1[0],lyr2[0],lyr3[0]]).appendTo(完整?“正文”:el);var层=[lyr1,lyr2,lyr3],$par=满$(‘主体’):$(el);$.each(层,函数(){this.appendTo($par);});if(opts.theme&&opts.draggable&&$.fn.dragable){lyr3.可拖动({句柄:“.ui-dialog-titlebar”,取消:'li'});}//ie7必须在quirks模式下使用绝对定位,并考虑activex问题(滚动时)var expr=setExpr&&(!$.boxModel||$('object,embed',full?null:el).length>0);if(ie6|expr){//给身体100%的高度if(完整&&opts.allowBodyStretch&&$.boxModel)$('html,body').css('height','100%');//修复阻塞元素具有边框宽度时的ie6问题if((ie6||!$.boxModel)&&!完全){var t=sz(el,'borderTopWidth'),l=sz;var fixT=t?'(0-'+t+')':0;var fixL=l?'(0-'+l+')':0;}//模拟固定位置$.每个([lyr1,lyr2,lyr3],函数(i,o){var s=o[0].style;s.position=“绝对”;如果(i<2){满了吗?s.setExpression('height','Math.max(document.body.scrollHeight,document.body.offsetHeight)-(jQuery.boxModel?0:'+opts.quirksmodeOffsetHack+')+“px”'):s.setExpression('height','this.parentNode.offsetHeight+“px”');满了吗?s.setExpression('width','jQuery.boxModel&&document.documentElement.clientWidth||document.body.clientWidth+“px”'):s.setExpression('width','this.parentNode.offsetWidth+“px”');if(fixL)s.setExpression('left',fixL;if(fixT)s.setExpression('top',fixT;}否则如果(opts.centerY){if(full)s.setExpression('top','(document.documentElement.clientHeight||document.body.clientHeight)/2-(this.offsetHeight/2)+(blah=document.dlocumentelement.scrollTop?document_document元素.scroll top:document.body.srollTop)+“px”');s.marginTop=0;}else if(!opts.centerY&&full){var top=(opts.css&&opts.css.top)?parseInt(opts.css.top):0;var表达式='((document.documentElement.scrollTop?document_documentElement.scrullTop:document.body.srollTop)+'+top+')+“px”';s.setExpression('top',表达式);}});}//显示消息if(消息){if(opts.theme)lyr3.find('.ui-widget-content').append(消息);其他的lyr3.附加(消息);if(msg.jquery | | msg.nodeType)$(消息).show();}if(($.browser.msie||opts.forceIframe)&&opts.showOverlay)lyr1.show();//不透明度为零if(opts.fadeIn){var cb=opts.onBlock?opts.onBlock:无操作;var cb1=(opts.showOverlay&&!msg)?cb:无操作;var cb2=消息?cb:无操作;if(选项.showOverlay)lyr2._fadeIn(opts.fadeIn,cb1);if(消息)lyr3._fadeIn(opts.fadeIn,cb2);}其他{if(选项.showOverlay)lyr2.show();if(消息)lyr3.show();if(opts.onBlock)opts.onBlock();}//绑定键和鼠标事件绑定(1,el,opts);if(完整){pageBlock=lyr3[0];pageBlockEls=$(':input:enabled:visible',pageBlock);if(opts.focusInput)setTimeout(焦点,20);}其他的中心(lyr3[0],opts.centerX,opts.centerY);if(操作超时){//自动解锁var to=设置超时(函数(){全部?$。unblockUI(opts):$(el).unblock(opt);},操作超时);$(el).data('blockUI.timeout',to);}};//移除块功能删除(el,opts){var full=(el==窗口);var$el=$(el);var数据=$el.data('blockUI.history');var to=$el.data('blockUI.timeout');如果(至){清除超时(至);$el.removeData('blockUI.timeout');}opts=$.extend({},$.blockUI.defaults,opts ||{});绑定(0,el,opts);//取消绑定事件if(opts.onUnblock===空){opts.onUnblock=$el.data('blockUI.onUnblock');$el.removeData('blockUI.onUnblock');}变量els;if(full)//疯狂选择器,用于处理ie6/7中的奇数字段错误els=$(‘body’).children().filter(‘.blockUI’).add(‘body>.blockUI');其他的els=$('.blockUI',el);if(完整)pageBlock=pageBlockEls=null;如果(opts.fadeOut){els.fadeOut(选项淡出);setTimeout(function(){reset(els,data,opts,el);},opts.fadeOut);}其他的重置(els、data、opts、el);};//将阻塞元素移回其开始的DOM功能重置(els、data、opts、el){els.each(函数(i,o){//通过DOM调用删除,这样我们就不会丢失事件处理程序if(this.parentNode)this.parentNode.removeChild(this);});if(data&&data.el){data.el.style.display=数据.display;data.el.style.position=数据位置;if(数据.父项)data.parent.appendChild(data.el);$(el).removeData('blockUI.history');}if(opts.onUnblock的类型==“函数”)opts.onUnblock(el,opts);};//绑定/取消绑定处理程序函数绑定(b,el,opts){var full=el==窗口,$el=$(el);//如果没有要解除绑定的内容,则不必费心解除绑定if(!b&&(完整的&&!pageBlock||!完整的&&&!$el.data('blockUI.isBlocked'))回报;$el.data('blockUI.isBlocked',b);//当覆盖未使用或bindEvents为false时不绑定事件if(!opts.bindEvents||(b&&!opts.showOverlay))回报;//为鼠标和键事件绑定锚和输入var events=“mouse-down mouse-up key-down keypress”;b$(document).bind(events,opts,handler):$(document.unbind(events,handlers);//前执行。。。//var$e=$('a,:input');//b$e.bind(事件,opt,处理程序):$e.unbind(events,handler);};//阻止时禁止键盘/鼠标事件的事件处理程序函数处理程序(e){//允许选项卡导航(有条件地)if(e.keyCode&&e.keyCode==9){if(pageBlock&&e.data.contrainTabKey){var els=页面块els;var fwd=!e.shiftKey&&e.target===els[els.length-1];var back=e.shiftKey&&e.target===els[0];if(转发||back){setTimeout(function(){focus(back)},10);返回false;}}}var opts=e.data;//允许消息内容中的事件if($(e.target).parents('div.'+opts.blockMsgClass).length>0)返回true;//允许未被阻止的内容的事件return$(e.target).parents().children().filter('div.blockUI').length==0;};功能焦点(背面){if(!pageBlockEls)回报;var e=pageBlockEls[back===true?pageBlockEls.length-1:0];如果(e)e.焦点();};功能中心(el,x,y){var p=el.parentNode,s=el.style;var l=((p.offsetWidth-el.offsetWith)/2)-sz(p,'borderLeftWidth');var t=((p.offsetHeight-el.offsetHeight/2)-sz(p,'borderTopWidth');如果(x)s.left=l>0?(l+'px'):“0”;如果(y)s.top=t>0?(t+'px'):“0”;};函数sz(el,p){return parseInt($.css(el,p))||0;};};if(typeof define===‘function’&&define.amd&&define.amd.jQuery){define(['jquery'],设置);}其他{设置(jQuery);}})();