📄 jquery.blockui.js
字号:
pageMessageCSS: { width:'250px', margin:'-50px 0 0 -125px', top:'50%', left:'50%', textAlign:'center', color:'#000', backgroundColor:'#fff', border:'3px solid #aaa' }, // styles for the message when blocking an element elementMessageCSS: { width:'250px', padding:'10px', textAlign:'center', backgroundColor:'#fff'}, // styles for the displayBox displayBoxCSS: { width: '400px', height: '400px', top:'50%', left:'50%' }, // allow body element to be stetched in ie6 ie6Stretch: 1, // supress tab nav from leaving blocking content? allowTabToLeave: 0, // Title attribute for overlay when using displayBox closeMessage: 'Click to close', // use fadeOut effect when unblocking (can be overridden on unblock call) fadeOut: 1, // fadeOut transition time in millis fadeTime: 400};// the gory details$.blockUI.impl = { box: null, boxCallback: null, pageBlock: null, pageBlockEls: [], op8: window.opera && window.opera.version() < 9, ie6: $.browser.msie && /MSIE 6.0/.test(navigator.userAgent), install: function(el, msg, css, opts) { opts = opts || {}; this.boxCallback = typeof opts.displayMode == 'function' ? opts.displayMode : null; this.box = opts.displayMode ? msg : null; var full = (el == window); // use logical settings for opacity support based on browser but allow overrides via opts arg var noalpha = this.op8 || $.browser.mozilla && /Linux/.test(navigator.platform); if (typeof opts.alphaOverride != 'undefined') noalpha = opts.alphaOverride == 0 ? 1 : 0; if (full && this.pageBlock) this.remove(window, {fadeOut:0}); // check to see if we were only passed the css object (a literal) if (msg && typeof msg == 'object' && !msg.jquery && !msg.nodeType) { css = msg; msg = null; } msg = msg ? (msg.nodeType ? $(msg) : msg) : full ? $.blockUI.defaults.pageMessage : $.blockUI.defaults.elementMessage; if (opts.displayMode) var basecss = jQuery.extend({}, $.blockUI.defaults.displayBoxCSS); else var basecss = jQuery.extend({}, full ? $.blockUI.defaults.pageMessageCSS : $.blockUI.defaults.elementMessageCSS); css = jQuery.extend(basecss, css || {}); var f = ($.browser.msie) ? $('<iframe class="blockUI" style="z-index:1000;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="javascript:false;"></iframe>') : $('<div class="blockUI" style="display:none"></div>'); var w = $('<div class="blockUI" style="z-index:1001;cursor:wait;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>'); var m = full ? $('<div class="blockUI blockMsg" style="z-index:1002;cursor:wait;padding:0;position:fixed"></div>') : $('<div class="blockUI" style="display:none;z-index:1002;cursor:wait;position:absolute"></div>'); w.css('position', full ? 'fixed' : 'absolute'); if (msg) m.css(css); if (!noalpha) w.css($.blockUI.defaults.overlayCSS); if (this.op8) w.css({ width:''+el.clientWidth,height:''+el.clientHeight }); // lame if ($.browser.msie) f.css('opacity','0.0'); $([f[0],w[0],m[0]]).appendTo(full ? 'body' : el); // ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling) var expr = $.browser.msie && (!$.boxModel || $('object,embed', full ? null : el).length > 0); if (this.ie6 || expr) { // stretch content area if it's short if (full && $.blockUI.defaults.ie6Stretch && $.boxModel) $('html,body').css('height','100%'); // fix ie6 problem when blocked element has a border width if ((this.ie6 || !$.boxModel) && !full) { var t = this.sz(el,'borderTopWidth'), l = this.sz(el,'borderLeftWidth'); var fixT = t ? '(0 - '+t+')' : 0; var fixL = l ? '(0 - '+l+')' : 0; } // simulate fixed position $.each([f,w,m], function(i,o) { var s = o[0].style; s.position = 'absolute'; if (i < 2) { full ? s.setExpression('height','document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + "px"') : s.setExpression('height','this.parentNode.offsetHeight + "px"'); full ? 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); } else { if (full) s.setExpression('top','(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"'); s.marginTop = 0; } }); } if (opts.displayMode) { w.css('cursor','default').attr('title', $.blockUI.defaults.closeMessage); m.css('cursor','default'); $([f[0],w[0],m[0]]).removeClass('blockUI').addClass('displayBox'); $().click($.blockUI.impl.boxHandler).bind('keypress', $.blockUI.impl.boxHandler); } else this.bind(1, el); m.append(msg).show(); if (msg.jquery) msg.show(); if (opts.displayMode) return; if (full) { this.pageBlock = m[0]; this.pageBlockEls = $(':input:enabled:visible',this.pageBlock); setTimeout(this.focus, 20); } else this.center(m[0]); }, remove: function(el, opts) { var o = $.extend({}, $.blockUI.defaults, opts); this.bind(0, el); var full = el == window; var els = full ? $('body').children().filter('.blockUI') : $('.blockUI', el); if (full) this.pageBlock = this.pageBlockEls = null; if (o.fadeOut) { els.fadeOut(o.fadeTime, function() { if (this.parentNode) this.parentNode.removeChild(this); }); } else els.remove(); }, boxRemove: function(el) { $().unbind('click',$.blockUI.impl.boxHandler).unbind('keypress', $.blockUI.impl.boxHandler); if (this.boxCallback) this.boxCallback(this.box); $('body .displayBox').hide().remove(); }, // event handler to suppress keyboard/mouse events when blocking handler: function(e) { if (e.keyCode && e.keyCode == 9) { if ($.blockUI.impl.pageBlock && !$.blockUI.defaults.allowTabToLeave) { var els = $.blockUI.impl.pageBlockEls; var fwd = !e.shiftKey && e.target == els[els.length-1]; var back = e.shiftKey && e.target == els[0]; if (fwd || back) { setTimeout(function(){$.blockUI.impl.focus(back)},10); return false; } } } if ($(e.target).parents('div.blockMsg').length > 0) return true; return $(e.target).parents().children().filter('div.blockUI').length == 0; }, boxHandler: function(e) { if ((e.keyCode && e.keyCode == 27) || (e.type == 'click' && $(e.target).parents('div.blockMsg').length == 0)) $.blockUI.impl.boxRemove(); return true; }, // bind/unbind the handler bind: function(b, el) { var full = el == window; // don't bother unbinding if there is nothing to unbind if (!b && (full && !this.pageBlock || !full && !el.$blocked)) return; if (!full) el.$blocked = b; var $e = $(el).find('a,:input'); $.each(['mousedown','mouseup','keydown','keypress','click'], function(i,o) { $e[b?'bind':'unbind'](o, $.blockUI.impl.handler); }); }, focus: function(back) { if (!$.blockUI.impl.pageBlockEls) return; var e = $.blockUI.impl.pageBlockEls[back===true ? $.blockUI.impl.pageBlockEls.length-1 : 0]; if (e) e.focus(); }, center: function(el) { var p = el.parentNode, s = el.style; var l = ((p.offsetWidth - el.offsetWidth)/2) - this.sz(p,'borderLeftWidth'); var t = ((p.offsetHeight - el.offsetHeight)/2) - this.sz(p,'borderTopWidth'); s.left = l > 0 ? (l+'px') : '0'; s.top = t > 0 ? (t+'px') : '0'; }, sz: function(el, p) { return parseInt($.css(el,p))||0; }};})(jQuery);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -