⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 browser.js

📁 初学者
💻 JS
字号:
/*	Copyright (c) 2004-2006, The Dojo Foundation	All Rights Reserved.	Licensed under the Academic Free License version 2.1 or above OR the	modified BSD license. For more information on Dojo licensing, see:		http://dojotoolkit.org/community/licensing.shtml*/dojo.provide("dojo.event.browser");dojo.require("dojo.event.common");dojo._ie_clobber = new function () {	this.clobberNodes = [];	function nukeProp(node, prop) {		try {			node[prop] = null;		}		catch (e) {		}		try {			delete node[prop];		}		catch (e) {		}		try {			node.removeAttribute(prop);		}		catch (e) {		}	}	this.clobber = function (nodeRef) {		var na;		var tna;		if (nodeRef) {			tna = nodeRef.all || nodeRef.getElementsByTagName("*");			na = [nodeRef];			for (var x = 0; x < tna.length; x++) {				if (tna[x]["__doClobber__"]) {					na.push(tna[x]);				}			}		} else {			try {				window.onload = null;			}			catch (e) {			}			na = (this.clobberNodes.length) ? this.clobberNodes : document.all;		}		tna = null;		var basis = {};		for (var i = na.length - 1; i >= 0; i = i - 1) {			var el = na[i];			try {				if (el && el["__clobberAttrs__"]) {					for (var j = 0; j < el.__clobberAttrs__.length; j++) {						nukeProp(el, el.__clobberAttrs__[j]);					}					nukeProp(el, "__clobberAttrs__");					nukeProp(el, "__doClobber__");				}			}			catch (e) {			}		}		na = null;	};};if (dojo.render.html.ie) {	dojo.addOnUnload(function () {		dojo._ie_clobber.clobber();		try {			if ((dojo["widget"]) && (dojo.widget["manager"])) {				dojo.widget.manager.destroyAll();			}		}		catch (e) {		}		if (dojo.widget) {			for (var name in dojo.widget._templateCache) {				if (dojo.widget._templateCache[name].node) {					dojo.dom.destroyNode(dojo.widget._templateCache[name].node);					dojo.widget._templateCache[name].node = null;					delete dojo.widget._templateCache[name].node;				}			}		}		try {			window.onload = null;		}		catch (e) {		}		try {			window.onunload = null;		}		catch (e) {		}		dojo._ie_clobber.clobberNodes = [];	});}dojo.event.browser = new function () {	var clobberIdx = 0;	this.normalizedEventName = function (eventName) {		switch (eventName) {		  case "CheckboxStateChange":		  case "DOMAttrModified":		  case "DOMMenuItemActive":		  case "DOMMenuItemInactive":		  case "DOMMouseScroll":		  case "DOMNodeInserted":		  case "DOMNodeRemoved":		  case "RadioStateChange":			return eventName;			break;		  default:			var lcn = eventName.toLowerCase();			return (lcn.indexOf("on") == 0) ? lcn.substr(2) : lcn;			break;		}	};	this.clean = function (node) {		if (dojo.render.html.ie) {			dojo._ie_clobber.clobber(node);		}	};	this.addClobberNode = function (node) {		if (!dojo.render.html.ie) {			return;		}		if (!node["__doClobber__"]) {			node.__doClobber__ = true;			dojo._ie_clobber.clobberNodes.push(node);			node.__clobberAttrs__ = [];		}	};	this.addClobberNodeAttrs = function (node, props) {		if (!dojo.render.html.ie) {			return;		}		this.addClobberNode(node);		for (var x = 0; x < props.length; x++) {			node.__clobberAttrs__.push(props[x]);		}	};	this.removeListener = function (node, evtName, fp, capture) {		if (!capture) {			var capture = false;		}		evtName = dojo.event.browser.normalizedEventName(evtName);		if (evtName == "key") {			if (dojo.render.html.ie) {				this.removeListener(node, "onkeydown", fp, capture);			}			evtName = "keypress";		}		if (node.removeEventListener) {			node.removeEventListener(evtName, fp, capture);		}	};	this.addListener = function (node, evtName, fp, capture, dontFix) {		if (!node) {			return;		}		if (!capture) {			var capture = false;		}		evtName = dojo.event.browser.normalizedEventName(evtName);		if (evtName == "key") {			if (dojo.render.html.ie) {				this.addListener(node, "onkeydown", fp, capture, dontFix);			}			evtName = "keypress";		}		if (!dontFix) {			var newfp = function (evt) {				if (!evt) {					evt = window.event;				}				var ret = fp(dojo.event.browser.fixEvent(evt, this));				if (capture) {					dojo.event.browser.stopEvent(evt);				}				return ret;			};		} else {			newfp = fp;		}		if (node.addEventListener) {			node.addEventListener(evtName, newfp, capture);			return newfp;		} else {			evtName = "on" + evtName;			if (typeof node[evtName] == "function") {				var oldEvt = node[evtName];				node[evtName] = function (e) {					oldEvt(e);					return newfp(e);				};			} else {				node[evtName] = newfp;			}			if (dojo.render.html.ie) {				this.addClobberNodeAttrs(node, [evtName]);			}			return newfp;		}	};	this.isEvent = function (obj) {		return (typeof obj != "undefined") && (obj) && (typeof Event != "undefined") && (obj.eventPhase);	};	this.currentEvent = null;	this.callListener = function (listener, curTarget) {		if (typeof listener != "function") {			dojo.raise("listener not a function: " + listener);		}		dojo.event.browser.currentEvent.currentTarget = curTarget;		return listener.call(curTarget, dojo.event.browser.currentEvent);	};	this._stopPropagation = function () {		dojo.event.browser.currentEvent.cancelBubble = true;	};	this._preventDefault = function () {		dojo.event.browser.currentEvent.returnValue = false;	};	this.keys = {KEY_BACKSPACE:8, KEY_TAB:9, KEY_CLEAR:12, KEY_ENTER:13, KEY_SHIFT:16, KEY_CTRL:17, KEY_ALT:18, KEY_PAUSE:19, KEY_CAPS_LOCK:20, KEY_ESCAPE:27, KEY_SPACE:32, KEY_PAGE_UP:33, KEY_PAGE_DOWN:34, KEY_END:35, KEY_HOME:36, KEY_LEFT_ARROW:37, KEY_UP_ARROW:38, KEY_RIGHT_ARROW:39, KEY_DOWN_ARROW:40, KEY_INSERT:45, KEY_DELETE:46, KEY_HELP:47, KEY_LEFT_WINDOW:91, KEY_RIGHT_WINDOW:92, KEY_SELECT:93, KEY_NUMPAD_0:96, KEY_NUMPAD_1:97, KEY_NUMPAD_2:98, KEY_NUMPAD_3:99, KEY_NUMPAD_4:100, KEY_NUMPAD_5:101, KEY_NUMPAD_6:102, KEY_NUMPAD_7:103, KEY_NUMPAD_8:104, KEY_NUMPAD_9:105, KEY_NUMPAD_MULTIPLY:106, KEY_NUMPAD_PLUS:107, KEY_NUMPAD_ENTER:108, KEY_NUMPAD_MINUS:109, KEY_NUMPAD_PERIOD:110, KEY_NUMPAD_DIVIDE:111, KEY_F1:112, KEY_F2:113, KEY_F3:114, KEY_F4:115, KEY_F5:116, KEY_F6:117, KEY_F7:118, KEY_F8:119, KEY_F9:120, KEY_F10:121, KEY_F11:122, KEY_F12:123, KEY_F13:124, KEY_F14:125, KEY_F15:126, KEY_NUM_LOCK:144, KEY_SCROLL_LOCK:145};	this.revKeys = [];	for (var key in this.keys) {		this.revKeys[this.keys[key]] = key;	}	this.fixEvent = function (evt, sender) {		if (!evt) {			if (window["event"]) {				evt = window.event;			}		}		if ((evt["type"]) && (evt["type"].indexOf("key") == 0)) {			evt.keys = this.revKeys;			for (var key in this.keys) {				evt[key] = this.keys[key];			}			if (evt["type"] == "keydown" && dojo.render.html.ie) {				switch (evt.keyCode) {				  case evt.KEY_SHIFT:				  case evt.KEY_CTRL:				  case evt.KEY_ALT:				  case evt.KEY_CAPS_LOCK:				  case evt.KEY_LEFT_WINDOW:				  case evt.KEY_RIGHT_WINDOW:				  case evt.KEY_SELECT:				  case evt.KEY_NUM_LOCK:				  case evt.KEY_SCROLL_LOCK:				  case evt.KEY_NUMPAD_0:				  case evt.KEY_NUMPAD_1:				  case evt.KEY_NUMPAD_2:				  case evt.KEY_NUMPAD_3:				  case evt.KEY_NUMPAD_4:				  case evt.KEY_NUMPAD_5:				  case evt.KEY_NUMPAD_6:				  case evt.KEY_NUMPAD_7:				  case evt.KEY_NUMPAD_8:				  case evt.KEY_NUMPAD_9:				  case evt.KEY_NUMPAD_PERIOD:					break;				  case evt.KEY_NUMPAD_MULTIPLY:				  case evt.KEY_NUMPAD_PLUS:				  case evt.KEY_NUMPAD_ENTER:				  case evt.KEY_NUMPAD_MINUS:				  case evt.KEY_NUMPAD_DIVIDE:					break;				  case evt.KEY_PAUSE:				  case evt.KEY_TAB:				  case evt.KEY_BACKSPACE:				  case evt.KEY_ENTER:				  case evt.KEY_ESCAPE:				  case evt.KEY_PAGE_UP:				  case evt.KEY_PAGE_DOWN:				  case evt.KEY_END:				  case evt.KEY_HOME:				  case evt.KEY_LEFT_ARROW:				  case evt.KEY_UP_ARROW:				  case evt.KEY_RIGHT_ARROW:				  case evt.KEY_DOWN_ARROW:				  case evt.KEY_INSERT:				  case evt.KEY_DELETE:				  case evt.KEY_F1:				  case evt.KEY_F2:				  case evt.KEY_F3:				  case evt.KEY_F4:				  case evt.KEY_F5:				  case evt.KEY_F6:				  case evt.KEY_F7:				  case evt.KEY_F8:				  case evt.KEY_F9:				  case evt.KEY_F10:				  case evt.KEY_F11:				  case evt.KEY_F12:				  case evt.KEY_F12:				  case evt.KEY_F13:				  case evt.KEY_F14:				  case evt.KEY_F15:				  case evt.KEY_CLEAR:				  case evt.KEY_HELP:					evt.key = evt.keyCode;					break;				  default:					if (evt.ctrlKey || evt.altKey) {						var unifiedCharCode = evt.keyCode;						if (unifiedCharCode >= 65 && unifiedCharCode <= 90 && evt.shiftKey == false) {							unifiedCharCode += 32;						}						if (unifiedCharCode >= 1 && unifiedCharCode <= 26 && evt.ctrlKey) {							unifiedCharCode += 96;						}						evt.key = String.fromCharCode(unifiedCharCode);					}				}			} else {				if (evt["type"] == "keypress") {					if (dojo.render.html.opera) {						if (evt.which == 0) {							evt.key = evt.keyCode;						} else {							if (evt.which > 0) {								switch (evt.which) {								  case evt.KEY_SHIFT:								  case evt.KEY_CTRL:								  case evt.KEY_ALT:								  case evt.KEY_CAPS_LOCK:								  case evt.KEY_NUM_LOCK:								  case evt.KEY_SCROLL_LOCK:									break;								  case evt.KEY_PAUSE:								  case evt.KEY_TAB:								  case evt.KEY_BACKSPACE:								  case evt.KEY_ENTER:								  case evt.KEY_ESCAPE:									evt.key = evt.which;									break;								  default:									var unifiedCharCode = evt.which;									if ((evt.ctrlKey || evt.altKey || evt.metaKey) && (evt.which >= 65 && evt.which <= 90 && evt.shiftKey == false)) {										unifiedCharCode += 32;									}									evt.key = String.fromCharCode(unifiedCharCode);								}							}						}					} else {						if (dojo.render.html.ie) {							if (!evt.ctrlKey && !evt.altKey && evt.keyCode >= evt.KEY_SPACE) {								evt.key = String.fromCharCode(evt.keyCode);							}						} else {							if (dojo.render.html.safari) {								switch (evt.keyCode) {								  case 25:									evt.key = evt.KEY_TAB;									evt.shift = true;									break;								  case 63232:									evt.key = evt.KEY_UP_ARROW;									break;								  case 63233:									evt.key = evt.KEY_DOWN_ARROW;									break;								  case 63234:									evt.key = evt.KEY_LEFT_ARROW;									break;								  case 63235:									evt.key = evt.KEY_RIGHT_ARROW;									break;								  case 63236:									evt.key = evt.KEY_F1;									break;								  case 63237:									evt.key = evt.KEY_F2;									break;								  case 63238:									evt.key = evt.KEY_F3;									break;								  case 63239:									evt.key = evt.KEY_F4;									break;								  case 63240:									evt.key = evt.KEY_F5;									break;								  case 63241:									evt.key = evt.KEY_F6;									break;								  case 63242:									evt.key = evt.KEY_F7;									break;								  case 63243:									evt.key = evt.KEY_F8;									break;								  case 63244:									evt.key = evt.KEY_F9;									break;								  case 63245:									evt.key = evt.KEY_F10;									break;								  case 63246:									evt.key = evt.KEY_F11;									break;								  case 63247:									evt.key = evt.KEY_F12;									break;								  case 63250:									evt.key = evt.KEY_PAUSE;									break;								  case 63272:									evt.key = evt.KEY_DELETE;									break;								  case 63273:									evt.key = evt.KEY_HOME;									break;								  case 63275:									evt.key = evt.KEY_END;									break;								  case 63276:									evt.key = evt.KEY_PAGE_UP;									break;								  case 63277:									evt.key = evt.KEY_PAGE_DOWN;									break;								  case 63302:									evt.key = evt.KEY_INSERT;									break;								  case 63248:								  case 63249:								  case 63289:									break;								  default:									evt.key = evt.charCode >= evt.KEY_SPACE ? String.fromCharCode(evt.charCode) : evt.keyCode;								}							} else {								evt.key = evt.charCode > 0 ? String.fromCharCode(evt.charCode) : evt.keyCode;							}						}					}				}			}		}		if (dojo.render.html.ie) {			if (!evt.target) {				evt.target = evt.srcElement;			}			if (!evt.currentTarget) {				evt.currentTarget = (sender ? sender : evt.srcElement);			}			if (!evt.layerX) {				evt.layerX = evt.offsetX;			}			if (!evt.layerY) {				evt.layerY = evt.offsetY;			}			var doc = (evt.srcElement && evt.srcElement.ownerDocument) ? evt.srcElement.ownerDocument : document;			var docBody = ((dojo.render.html.ie55) || (doc["compatMode"] == "BackCompat")) ? doc.body : doc.documentElement;			if (!evt.pageX) {				evt.pageX = evt.clientX + (docBody.scrollLeft || 0);			}			if (!evt.pageY) {				evt.pageY = evt.clientY + (docBody.scrollTop || 0);			}			if (evt.type == "mouseover") {				evt.relatedTarget = evt.fromElement;			}			if (evt.type == "mouseout") {				evt.relatedTarget = evt.toElement;			}			this.currentEvent = evt;			evt.callListener = this.callListener;			evt.stopPropagation = this._stopPropagation;			evt.preventDefault = this._preventDefault;		}		return evt;	};	this.stopEvent = function (evt) {		if (window.event) {			evt.cancelBubble = true;			evt.returnValue = false;		} else {			evt.preventDefault();			evt.stopPropagation();		}	};};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -