📄 container.js
字号:
YAHOO.widget.Overlay.prototype.onDomResize = function(e, obj) {
YAHOO.widget.Overlay.superclass.onDomResize.call(this, e, obj);
this.cfg.refireEvent("iframe");
}
/**
* A singleton CustomEvent used for reacting to the DOM event for window scroll
* @type YAHOO.util.CustomEvent
*/
YAHOO.widget.Overlay.windowScrollEvent = new YAHOO.util.CustomEvent("windowScroll");
/**
* A singleton CustomEvent used for reacting to the DOM event for window resize
* @type YAHOO.util.CustomEvent
*/
YAHOO.widget.Overlay.windowResizeEvent = new YAHOO.util.CustomEvent("windowResize");
/**
* The DOM event handler used to fire the CustomEvent for window scroll
* @type Function
*/
YAHOO.widget.Overlay.windowScrollHandler = function(e) {
YAHOO.widget.Overlay.windowScrollEvent.fire();
}
/**
* The DOM event handler used to fire the CustomEvent for window resize
* @type Function
*/
YAHOO.widget.Overlay.windowResizeHandler = function(e) {
YAHOO.widget.Overlay.windowResizeEvent.fire();
}
if (YAHOO.widget.Overlay._initialized == undefined) {
YAHOO.util.Event.addListener(window, "scroll", YAHOO.widget.Overlay.windowScrollHandler);
YAHOO.util.Event.addListener(window, "resize", YAHOO.widget.Overlay.windowResizeHandler);
/**
* @private
*/
YAHOO.widget.Overlay._initialized = true;
}
/**
Copyright (c) 2006, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
* @class
* OverlayManager is used for maintaining the focus status of multiple Overlays.
* @param {Array} overlays Optional. A collection of Overlays to register with the manager.
* @param {object} userConfig The object literal representing the user configuration of the OverlayManager
* @constructor
*/
YAHOO.widget.OverlayManager = function(userConfig) {
this.init(userConfig);
}
/**
* The CSS class representing a focused Overlay
* @type string
*/
YAHOO.widget.OverlayManager.CSS_FOCUSED = "focused";
YAHOO.widget.OverlayManager.prototype = {
constructor : YAHOO.widget.OverlayManager,
/**
* The array of Overlays that are currently registered
* @type Array
*/
overlays : new Array(),
/**
* Initializes the default configuration of the OverlayManager
*/
initDefaultConfig : function() {
this.cfg.addProperty("overlays", { suppressEvent:true } );
this.cfg.addProperty("focusevent", { value:"mousedown" } );
},
/**
* Returns the currently focused Overlay
* @return {Overlay} The currently focused Overlay
*/
getActive : function() {},
/**
* Focuses the specified Overlay
* @param {Overlay} The Overlay to focus
* @param {string} The id of the Overlay to focus
*/
focus : function(overlay) {},
/**
* Removes the specified Overlay from the manager
* @param {Overlay} The Overlay to remove
* @param {string} The id of the Overlay to remove
*/
remove: function(overlay) {},
/**
* Removes focus from all registered Overlays in the manager
*/
blurAll : function() {},
/**
* Initializes the OverlayManager
* @param {Array} overlays Optional. A collection of Overlays to register with the manager.
* @param {object} userConfig The object literal representing the user configuration of the OverlayManager
*/
init : function(userConfig) {
this.cfg = new YAHOO.util.Config(this);
this.initDefaultConfig();
if (userConfig) {
this.cfg.applyConfig(userConfig, true);
}
this.cfg.fireQueue();
var activeOverlay = null;
this.getActive = function() {
return activeOverlay;
}
this.focus = function(overlay) {
var o = this.find(overlay);
if (o) {
this.blurAll();
activeOverlay = o;
YAHOO.util.Dom.addClass(activeOverlay.element, YAHOO.widget.OverlayManager.CSS_FOCUSED);
this.overlays.sort(this.compareZIndexDesc);
var topZIndex = YAHOO.util.Dom.getStyle(this.overlays[0].element, "zIndex");
if (! isNaN(topZIndex) && this.overlays[0] != overlay) {
activeOverlay.cfg.setProperty("zIndex", (parseInt(topZIndex) + 1));
}
this.overlays.sort(this.compareZIndexDesc);
}
}
this.remove = function(overlay) {
var o = this.find(overlay);
if (o) {
var originalZ = YAHOO.util.Dom.getStyle(o.element, "zIndex");
o.cfg.setProperty("zIndex", -1000, true);
this.overlays.sort(this.compareZIndexDesc);
this.overlays = this.overlays.slice(0, this.overlays.length-1);
o.cfg.setProperty("zIndex", originalZ, true);
o.cfg.setProperty("manager", null);
o.focusEvent = null
o.blurEvent = null;
o.focus = null;
o.blur = null;
}
}
this.blurAll = function() {
activeOverlay = null;
for (var o=0;o<this.overlays.length;o++) {
YAHOO.util.Dom.removeClass(this.overlays[o].element, YAHOO.widget.OverlayManager.CSS_FOCUSED);
}
}
var overlays = this.cfg.getProperty("overlays");
if (overlays) {
this.register(overlays);
this.overlays.sort(this.compareZIndexDesc);
}
},
/**
* Registers an Overlay or an array of Overlays with the manager. Upon registration, the Overlay receives functions for focus and blur, along with CustomEvents for each.
* @param {Overlay} overlay An Overlay to register with the manager.
* @param {Overlay[]} overlay An array of Overlays to register with the manager.
* @return {boolean} True if any Overlays are registered.
*/
register : function(overlay) {
if (overlay instanceof YAHOO.widget.Overlay) {
overlay.cfg.addProperty("manager", { value:this } );
overlay.focusEvent = new YAHOO.util.CustomEvent("focus");
overlay.blurEvent = new YAHOO.util.CustomEvent("blur");
var mgr=this;
overlay.focus = function() {
mgr.focus(this);
this.focusEvent.fire();
}
overlay.blur = function() {
mgr.blurAll();
this.blurEvent.fire();
}
var focusOnDomEvent = function(e,obj) {
mgr.focus(overlay);
}
var focusevent = this.cfg.getProperty("focusevent");
YAHOO.util.Event.addListener(overlay.element,focusevent,focusOnDomEvent,this,true);
var zIndex = YAHOO.util.Dom.getStyle(overlay.element, "zIndex");
if (! isNaN(zIndex)) {
overlay.cfg.setProperty("zIndex", parseInt(zIndex));
} else {
overlay.cfg.setProperty("zIndex", 0);
}
this.overlays.push(overlay);
return true;
} else if (overlay instanceof Array) {
var regcount = 0;
for (var i=0;i<overlay.length;i++) {
if (this.register(overlay[i])) {
regcount++;
}
}
if (regcount > 0) {
return true;
}
} else {
return false;
}
},
/**
* Attempts to locate an Overlay by instance or ID.
* @param {Overlay} overlay An Overlay to locate within the manager
* @param {string} overlay An Overlay id to locate within the manager
* @return {Overlay} The requested Overlay, if found, or null if it cannot be located.
*/
find : function(overlay) {
if (overlay instanceof YAHOO.widget.Overlay) {
for (var o=0;o<this.overlays.length;o++) {
if (this.overlays[o] == overlay) {
return this.overlays[o];
}
}
} else if (typeof overlay == "string") {
for (var o=0;o<this.overlays.length;o++) {
if (this.overlays[o].id == overlay) {
return this.overlays[o];
}
}
}
return null;
},
/**
* Used for sorting the manager's Overlays by z-index.
* @private
*/
compareZIndexDesc : function(o1, o2) {
var zIndex1 = o1.cfg.getProperty("zIndex");
var zIndex2 = o2.cfg.getProperty("zIndex");
if (zIndex1 > zIndex2) {
return -1;
} else if (zIndex1 < zIndex2) {
return 1;
} else {
return 0;
}
},
/**
* Shows all Overlays in the manager.
*/
showAll : function() {
for (var o=0;o<this.overlays.length;o++) {
this.overlays[o].show();
}
},
/**
* Hides all Overlays in the manager.
*/
hideAll : function() {
for (var o=0;o<this.overlays.length;o++) {
this.overlays[o].hide();
}
}
}/**
Copyright (c) 2006, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
* @class
* KeyListener is a utility that provides an easy interface for listening for keydown/keyup events fired against DOM elements.
* @param {Element} attachTo The element or element ID to which the key event should be attached
* @param {string} attachTo The element or element ID to which the key event should be attached
* @param (object} keyData The object literal representing the key(s) to detect. Possible attributes are shift(boolean), alt(boolean), ctrl(boolean) and keys(either an int or an array of ints representing keycodes).
* @param {function} handler The CustomEvent handler to fire when the key event is detected
* @param {object} handler An object literal representing the handler.
* @param {string} event Optional. The event (keydown or keyup) to listen for. Defaults automatically to keydown.
* @constructor
*/
YAHOO.util.KeyListener = function(attachTo, keyData, handler, event) {
if (! event) {
event = YAHOO.util.KeyListener.KEYDOWN;
}
var keyEvent = new YAHOO.util.CustomEvent("keyPressed");
this.enabledEvent = new YAHOO.util.CustomEvent("enabled");
this.disabledEvent = new YAHOO.util.CustomEvent("disabled");
if (typeof attachTo == 'string') {
attachTo = document.getElementById(attachTo);
}
if (typeof handler == 'function') {
keyEvent.subscribe(handler);
} else {
keyEvent.subscribe(handler.fn, handler.scope, handler.correctScope);
}
/**
* Handles the key event when a key is pressed.
* @private
*/
var handleKeyPress = function(e, obj) {
var keyPressed = e.charCode || e.keyCode;
if (! keyData.shift) keyData.shift = false;
if (! keyData.alt) keyData.alt = false;
if (! keyData.ctrl) keyData.ctrl = false;
// check held down modifying keys first
if (e.shiftKey == keyData.shift &&
e.altKey == keyData.alt &&
e.ctrlKey == keyData.ctrl) { // if we pass this, all modifiers match
if (keyData.keys instanceof Array) {
for (var i=0;i<keyData.keys.length;i++) {
if (keyPressed == keyData.keys[i]) {
keyEvent.fire(keyPressed, e);
break;
}
}
} else {
if (keyPressed == keyData.keys) {
keyEvent.fire(keyPressed, e);
}
}
}
}
this.enable = function() {
if (! this.enabled) {
YAHOO.util.Event.addListener(attachTo, event, handleKeyPress);
this.enabledEvent.fire(keyData);
}
this.enabled = true;
}
this.disable = function() {
if (this.enabled) {
YAHOO.util.Event.removeListener(attachTo, event, handleKeyPress);
this.disabledEvent.fire(keyData);
}
this.enabled = false;
}
}
/**
* Constant representing the DOM "keydown" event.
* @final
*/
YAHOO.util.KeyListener.KEYDOWN = "keydown";
/**
* Constant representing the DOM "keyup" event.
* @final
*/
YAHOO.util.KeyListener.KEYUP = "keyup";
/**
* Enables the KeyListener, by dynamically attaching the key event to the appropriate DOM element.
*/
YAHOO.util.KeyListener.prototype.enable = function() {};
/**
* Disables the KeyListener, by dynamically removing the key event from the appropriate DOM element.
*/
YAHOO.util.KeyListener.prototype.disable = function() {};
/**
* CustomEvent fired when the KeyListener is enabled
* args: keyData
* @type YAHOO.util.CustomEvent
*/
YAHOO.util.KeyListener.prototype.enabledEvent = null;
/**
* CustomEvent fired when the KeyListener is disabled
* args: keyData
* @type YAHOO.util.CustomEvent
*/
YAHOO.util.KeyListener.prototype.disabledEvent = null;
/**
Copyright (c) 2006, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
* @class
* Tooltip is an implementation of Overlay that behaves like an OS tooltip, displaying when the user mouses over a particular element, and disappearing on mouse out.
* @param {string} el The element ID representing the Tooltip <em>OR</em>
* @param {Element} el The element representing the Tooltip
* @param {object} userConfig The configuration object literal containing the configuration that should be set for this Overlay. See configuration documentation for more details.
* @constructor
*/
YAHOO.widget.Tooltip = function(el, userConfig) {
if (arguments.length > 0) {
YAHOO.widget.Tooltip.superclass.constructor.call(this, el, userConfig);
}
}
YAHOO.widget.Tooltip.prototype = new YAHOO.widget.Overlay();
YAHOO.widget.Tooltip.prot
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -