📄 container.js
字号:
/*** Overlay is a Module that is absolutely positioned above the page flow. It has convenience methods for positioning and sizing, as well as options for controlling zIndex and constraining the Overlay's position to the current visible viewport. Overlay also contains a dynamicly generated IFRAME which is placed beneath it for Internet Explorer 6 and 5.x so that it will be properly rendered above SELECT elements.* @namespace YAHOO.widget* @class Overlay* @extends YAHOO.widget.Module* @param {String} el The element ID representing the Overlay <em>OR</em>* @param {HTMLElement} el The element representing the Overlay* @param {Object} userConfig The configuration object literal containing 10/23/2006the configuration that should be set for this Overlay. See configuration documentation for more details.* @constructor*/YAHOO.widget.Overlay = function(el, userConfig) { YAHOO.widget.Overlay.superclass.constructor.call(this, el, userConfig);};YAHOO.extend(YAHOO.widget.Overlay, YAHOO.widget.Module);/*** The URL that will be placed in the iframe* @property YAHOO.widget.Overlay.IFRAME_SRC* @static* @final* @type String*/YAHOO.widget.Overlay.IFRAME_SRC = "javascript:false;";/*** Constant representing the top left corner of an element, used for configuring the context element alignment* @property YAHOO.widget.Overlay.TOP_LEFT* @static* @final* @type String*/YAHOO.widget.Overlay.TOP_LEFT = "tl";/*** Constant representing the top right corner of an element, used for configuring the context element alignment* @property YAHOO.widget.Overlay.TOP_RIGHT* @static* @final* @type String*/YAHOO.widget.Overlay.TOP_RIGHT = "tr";/*** Constant representing the top bottom left corner of an element, used for configuring the context element alignment* @property YAHOO.widget.Overlay.BOTTOM_LEFT* @static* @final* @type String*/YAHOO.widget.Overlay.BOTTOM_LEFT = "bl";/*** Constant representing the bottom right corner of an element, used for configuring the context element alignment* @property YAHOO.widget.Overlay.BOTTOM_RIGHT* @static* @final* @type String*/YAHOO.widget.Overlay.BOTTOM_RIGHT = "br";/*** Constant representing the default CSS class used for an Overlay* @property YAHOO.widget.Overlay.CSS_OVERLAY* @static* @final* @type String*/YAHOO.widget.Overlay.CSS_OVERLAY = "overlay";/*** The Overlay initialization method, which is executed for Overlay and all of its subclasses. This method is automatically called by the constructor, and sets up all DOM references for pre-existing markup, and creates required markup if it is not already present.* @method init* @param {String} el The element ID representing the Overlay <em>OR</em>* @param {HTMLElement} el The element representing the Overlay* @param {Object} userConfig The configuration object literal containing the configuration that should be set for this Overlay. See configuration documentation for more details.*/YAHOO.widget.Overlay.prototype.init = function(el, userConfig) { YAHOO.widget.Overlay.superclass.init.call(this, el/*, userConfig*/); // Note that we don't pass the user config in here yet because we only want it executed once, at the lowest subclass level this.beforeInitEvent.fire(YAHOO.widget.Overlay); YAHOO.util.Dom.addClass(this.element, YAHOO.widget.Overlay.CSS_OVERLAY); if (userConfig) { this.cfg.applyConfig(userConfig, true); } if (this.platform == "mac" && this.browser == "gecko") { if (! YAHOO.util.Config.alreadySubscribed(this.showEvent,this.showMacGeckoScrollbars,this)) { this.showEvent.subscribe(this.showMacGeckoScrollbars,this,true); } if (! YAHOO.util.Config.alreadySubscribed(this.hideEvent,this.hideMacGeckoScrollbars,this)) { this.hideEvent.subscribe(this.hideMacGeckoScrollbars,this,true); } } this.initEvent.fire(YAHOO.widget.Overlay);};/*** Initializes the custom events for Overlay which are fired automatically at appropriate times by the Overlay class.* @method initEvents*/YAHOO.widget.Overlay.prototype.initEvents = function() { YAHOO.widget.Overlay.superclass.initEvents.call(this); /** * CustomEvent fired before the Overlay is moved. * @event beforeMoveEvent * @param {Number} x x coordinate * @param {Number} y y coordinate */ this.beforeMoveEvent = new YAHOO.util.CustomEvent("beforeMove", this); /** * CustomEvent fired after the Overlay is moved. * @event moveEvent * @param {Number} x x coordinate * @param {Number} y y coordinate */ this.moveEvent = new YAHOO.util.CustomEvent("move", this);};/*** Initializes the class's configurable properties which can be changed using the Overlay's Config object (cfg).* @method initDefaultConfig*/YAHOO.widget.Overlay.prototype.initDefaultConfig = function() { YAHOO.widget.Overlay.superclass.initDefaultConfig.call(this); // Add overlay config properties // /** * The absolute x-coordinate position of the Overlay * @config x * @type Number * @default null */ this.cfg.addProperty("x", { handler:this.configX, validator:this.cfg.checkNumber, suppressEvent:true, supercedes:["iframe"] } ); /** * The absolute y-coordinate position of the Overlay * @config y * @type Number * @default null */ this.cfg.addProperty("y", { handler:this.configY, validator:this.cfg.checkNumber, suppressEvent:true, supercedes:["iframe"] } ); /** * An array with the absolute x and y positions of the Overlay * @config xy * @type Number[] * @default null */ this.cfg.addProperty("xy",{ handler:this.configXY, suppressEvent:true, supercedes:["iframe"] } ); /** * The array of context arguments for context-sensitive positioning. The format is: [id or element, element corner, context corner]. For example, setting this property to ["img1", "tl", "bl"] would align the Overlay's top left corner to the context element's bottom left corner. * @config context * @type Array * @default null */ this.cfg.addProperty("context", { handler:this.configContext, suppressEvent:true, supercedes:["iframe"] } ); /** * True if the Overlay should be anchored to the center of the viewport. * @config fixedcenter * @type Boolean * @default false */ this.cfg.addProperty("fixedcenter", { value:false, handler:this.configFixedCenter, validator:this.cfg.checkBoolean, supercedes:["iframe","visible"] } ); /** * CSS width of the Overlay. * @config width * @type String * @default null */ this.cfg.addProperty("width", { handler:this.configWidth, suppressEvent:true, supercedes:["iframe"] } ); /** * CSS height of the Overlay. * @config height * @type String * @default null */ this.cfg.addProperty("height", { handler:this.configHeight, suppressEvent:true, supercedes:["iframe"] } ); /** * CSS z-index of the Overlay. * @config zIndex * @type Number * @default null */ this.cfg.addProperty("zIndex", { value:null, handler:this.configzIndex } ); /** * True if the Overlay should be prevented from being positioned out of the viewport. * @config constraintoviewport * @type Boolean * @default false */ this.cfg.addProperty("constraintoviewport", { value:false, handler:this.configConstrainToViewport, validator:this.cfg.checkBoolean, supercedes:["iframe","x","y","xy"] } ); /** * True if the Overlay should have an IFRAME shim (for correcting the select z-index bug in IE6 and below). * @config iframe * @type Boolean * @default true for IE6 and below, false for all others */ this.cfg.addProperty("iframe", { value:(this.browser == "ie" ? true : false), handler:this.configIframe, validator:this.cfg.checkBoolean, supercedes:["zIndex"] } );};/*** Moves the Overlay to the specified position. This function is identical to calling this.cfg.setProperty("xy", [x,y]);* @method moveTo* @param {Number} x The Overlay's new x position* @param {Number} y The Overlay's new y position*/YAHOO.widget.Overlay.prototype.moveTo = function(x, y) { this.cfg.setProperty("xy",[x,y]);};/*** Adds a special CSS class to the Overlay when Mac/Gecko is in use, to work around a Gecko bug where* scrollbars cannot be hidden. See https://bugzilla.mozilla.org/show_bug.cgi?id=187435* @method hideMacGeckoScrollbars*/YAHOO.widget.Overlay.prototype.hideMacGeckoScrollbars = function() { YAHOO.util.Dom.removeClass(this.element, "show-scrollbars"); YAHOO.util.Dom.addClass(this.element, "hide-scrollbars");};/*** Removes a special CSS class from the Overlay when Mac/Gecko is in use, to work around a Gecko bug where* scrollbars cannot be hidden. See https://bugzilla.mozilla.org/show_bug.cgi?id=187435* @method showMacGeckoScrollbars*/YAHOO.widget.Overlay.prototype.showMacGeckoScrollbars = function() { YAHOO.util.Dom.removeClass(this.element, "hide-scrollbars"); YAHOO.util.Dom.addClass(this.element, "show-scrollbars");};// BEGIN BUILT-IN PROPERTY EVENT HANDLERS ///*** The default event handler fired when the "visible" property is changed. This method is responsible for firing showEvent and hideEvent.* @method configVisible* @param {String} type The CustomEvent type (usually the property name)* @param {Object[]} args The CustomEvent arguments. For configuration handlers, args[0] will equal the newly applied value for the property.* @param {Object} obj The scope object. For configuration handlers, this will usually equal the owner.*/YAHOO.widget.Overlay.prototype.configVisible = function(type, args, obj) { var visible = args[0]; var currentVis = YAHOO.util.Dom.getStyle(this.element, "visibility"); if (currentVis == "inherit") { var e = this.element.parentNode; while (e.nodeType != 9 && e.nodeType != 11) { currentVis = YAHOO.util.Dom.getStyle(e, "visibility"); if (currentVis != "inherit") { break; } e = e.parentNode; } if (currentVis == "inherit") { currentVis = "visible"; } } var effect = this.cfg.getProperty("effect"); var effectInstances = []; if (effect) { if (effect instanceof Array) { for (var i=0;i<effect.length;i++) { var eff = effect[i]; effectInstances[effectInstances.length] = eff.effect(this, eff.duration); } } else { effectInstances[effectInstances.length] = effect.effect(this, effect.duration); } } var isMacGecko = (this.platform == "mac" && this.browser == "gecko"); if (visible) { // Show if (isMacGecko) { this.showMacGeckoScrollbars(); } if (effect) { // Animate in if (visible) { // Animate in if not showing if (currentVis != "visible" || currentVis === "") { this.beforeShowEvent.fire(); for (var j=0;j<effectInstances.length;j++) { var ei = effectInstances[j]; if (j === 0 && ! YAHOO.util.Config.alreadySubscribed(ei.animateInCompleteEvent,this.showEvent.fire,this.showEvent)) { ei.animateInCompleteEvent.subscribe(this.showEvent.fire,this.showEvent,true); // Delegate showEvent until end of animateInComplete } ei.animateIn(); } } } } else { // Show if (currentVis != "visible" || currentVis === "") { this.beforeShowEvent.fire(); YAHOO.util.Dom.setStyle(this.element, "visibility", "visible"); this.cfg.refireEvent("iframe"); this.showEvent.fire(); } } } else { // Hide if (isMacGecko) { this.hideMacGeckoScrollbars(); } if (effect) { // Animate out if showing if (currentVis == "visible") { this.beforeHideEvent.fire(); for (var k=0;k<effectInstances.length;k++) { var h = effectInstances[k]; if (k === 0 && ! YAHOO.util.Config.alreadySubscribed(h.animateOutCompleteEvent,this.hideEvent.fire,this.hideEvent)) { h.animateOutCompleteEvent.subscribe(this.hideEvent.fire,this.hideEvent,true); // Delegate hideEvent until end of animateOutComplete } h.animateOut(); } } else if (currentVis === "") { YAHOO.util.Dom.setStyle(this.element, "visibility", "hidden"); } } else { // Simple hide if (currentVis == "visible" || currentVis === "") { this.beforeHideEvent.fire(); YAHOO.util.Dom.setStyle(this.element, "visibility", "hidden"); this.cfg.refireEvent("iframe"); this.hideEvent.fire(); } } }};/*** Center event handler used for centering on scroll/resize, but only if the Overlay is visible* @method doCenterOnDOMEvent*/YAHOO.widget.Overlay.prototype.doCenterOnDOMEvent = function() { if (this.cfg.getProperty("visible")) { this.center(); }};/*** The default event handler fired when the "fixedcenter" property is changed.* @method configFixedCenter* @param {String} type The CustomEvent type (usually the property name)* @param {Object[]} args The CustomEvent arguments. For configuration handlers, args[0] will equal the newly applied value for the property.* @param {Object} obj The scope object. For configuration handlers, this will usually equal the owner.*/YAHOO.widget.Overlay.prototype.configFixedCenter = function(type, args, obj) { var val = args[0]; if (val) { this.center(); if (! YAHOO.util.Config.alreadySubscribed(this.beforeShowEvent, this.center, this)) { this.beforeShowEvent.subscribe(this.center, this, true); } if (! YAHOO.util.Config.alreadySubscribed(YAHOO.widget.Overlay.windowResizeEvent, this.doCenterOnDOMEvent, this)) { YAHOO.widget.Overlay.windowResizeEvent.subscribe(this.doCenterOnDOMEvent, this, true); } if (! YAHOO.util.Config.alreadySubscribed(YAHOO.widget.Overlay.windowScrollEvent, this.doCenterOnDOMEvent, this)) { YAHOO.widget.Overlay.windowScrollEvent.subscribe( this.doCenterOnDOMEvent, this, true); } } else { YAHOO.widget.Overlay.windowResizeEvent.unsubscribe(this.doCenterOnDOMEvent, this); YAHOO.widget.Overlay.windowScrollEvent.unsubscribe(this.doCenterOnDOMEvent, this); }};/*** The default event handler fired when the "height" property is changed.* @method configHeight* @param {String} type The CustomEvent type (usually the property name)* @param {Object[]} args The CustomEvent arguments. For configuration handlers, args[0] will equal the newly applied value for the property.* @param {Object} obj The scope object. For configuration handlers, this will usually equal the owner.*/YAHOO.widget.Overlay.prototype.configHeight = function(type, args, obj) { var height = args[0]; var el = this.element; YAHOO.util.Dom.setStyle(el, "height", height); this.cfg.refireEvent("iframe");};/*** The default event handler fired when the "width" property is changed.* @method configWidth* @param {String} type The CustomEvent type (usually the property name)* @param {Object[]} args The CustomEvent arguments. For configuration handlers, args[0] will equal the newly applied value for the property.* @param {Object} obj The scope object. For configuration handlers, this will usually equal the owner.*/YAHOO.widget.Overlay.prototype.configWidth = function(type, args, obj) { var width = args[0]; var el = this.element; YAHOO.util.Dom.setStyle(el, "width", width); this.cfg.refireEvent("iframe");};/*** The default event handler fired when the "zIndex" property is changed.* @method configzIndex* @param {String} type The CustomEvent type (usually the property name)* @param {Object[]} args The CustomEvent arguments. For configuration handlers, args[0] will equal the newly applied value for the property.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -