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

📄 dialog.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.widget.Dialog");dojo.require("dojo.widget.*");dojo.require("dojo.widget.ContentPane");dojo.require("dojo.event.*");dojo.require("dojo.gfx.color");dojo.require("dojo.html.layout");dojo.require("dojo.html.display");dojo.require("dojo.html.iframe");dojo.declare("dojo.widget.ModalDialogBase", null, {isContainer:true, focusElement:"", bgColor:"black", bgOpacity:0.4, followScroll:true, closeOnBackgroundClick:false, trapTabs:function (e) {	if (e.target == this.tabStartOuter) {		if (this._fromTrap) {			this.tabStart.focus();			this._fromTrap = false;		} else {			this._fromTrap = true;			this.tabEnd.focus();		}	} else {		if (e.target == this.tabStart) {			if (this._fromTrap) {				this._fromTrap = false;			} else {				this._fromTrap = true;				this.tabEnd.focus();			}		} else {			if (e.target == this.tabEndOuter) {				if (this._fromTrap) {					this.tabEnd.focus();					this._fromTrap = false;				} else {					this._fromTrap = true;					this.tabStart.focus();				}			} else {				if (e.target == this.tabEnd) {					if (this._fromTrap) {						this._fromTrap = false;					} else {						this._fromTrap = true;						this.tabStart.focus();					}				}			}		}	}}, clearTrap:function (e) {	var _this = this;	setTimeout(function () {		_this._fromTrap = false;	}, 100);}, postCreate:function () {	with (this.domNode.style) {		position = "absolute";		zIndex = 999;		display = "none";		overflow = "visible";	}	var b = dojo.body();	b.appendChild(this.domNode);	this.bg = document.createElement("div");	this.bg.className = "dialogUnderlay";	with (this.bg.style) {		position = "absolute";		left = top = "0px";		zIndex = 998;		display = "none";	}	b.appendChild(this.bg);	this.setBackgroundColor(this.bgColor);	this.bgIframe = new dojo.html.BackgroundIframe();	if (this.bgIframe.iframe) {		with (this.bgIframe.iframe.style) {			position = "absolute";			left = top = "0px";			zIndex = 90;			display = "none";		}	}	if (this.closeOnBackgroundClick) {		dojo.event.kwConnect({srcObj:this.bg, srcFunc:"onclick", adviceObj:this, adviceFunc:"onBackgroundClick", once:true});	}}, uninitialize:function () {	this.bgIframe.remove();	dojo.html.removeNode(this.bg, true);}, setBackgroundColor:function (color) {	if (arguments.length >= 3) {		color = new dojo.gfx.color.Color(arguments[0], arguments[1], arguments[2]);	} else {		color = new dojo.gfx.color.Color(color);	}	this.bg.style.backgroundColor = color.toString();	return this.bgColor = color;}, setBackgroundOpacity:function (op) {	if (arguments.length == 0) {		op = this.bgOpacity;	}	dojo.html.setOpacity(this.bg, op);	try {		this.bgOpacity = dojo.html.getOpacity(this.bg);	}	catch (e) {		this.bgOpacity = op;	}	return this.bgOpacity;}, _sizeBackground:function () {	if (this.bgOpacity > 0) {		var viewport = dojo.html.getViewport();		var h = viewport.height;		var w = viewport.width;		with (this.bg.style) {			width = w + "px";			height = h + "px";		}		var scroll_offset = dojo.html.getScroll().offset;		this.bg.style.top = scroll_offset.y + "px";		this.bg.style.left = scroll_offset.x + "px";		var viewport = dojo.html.getViewport();		if (viewport.width != w) {			this.bg.style.width = viewport.width + "px";		}		if (viewport.height != h) {			this.bg.style.height = viewport.height + "px";		}	}	this.bgIframe.size(this.bg);}, _showBackground:function () {	if (this.bgOpacity > 0) {		this.bg.style.display = "block";	}	if (this.bgIframe.iframe) {		this.bgIframe.iframe.style.display = "block";	}}, placeModalDialog:function () {	var scroll_offset = dojo.html.getScroll().offset;	var viewport_size = dojo.html.getViewport();	var mb;	if (this.isShowing()) {		mb = dojo.html.getMarginBox(this.domNode);	} else {		dojo.html.setVisibility(this.domNode, false);		dojo.html.show(this.domNode);		mb = dojo.html.getMarginBox(this.domNode);		dojo.html.hide(this.domNode);		dojo.html.setVisibility(this.domNode, true);	}	var x = scroll_offset.x + (viewport_size.width - mb.width) / 2;	var y = scroll_offset.y + (viewport_size.height - mb.height) / 2;	with (this.domNode.style) {		left = x + "px";		top = y + "px";	}}, _onKey:function (evt) {	if (evt.key) {		var node = evt.target;		while (node != null) {			if (node == this.domNode) {				return;			}			node = node.parentNode;		}		if (evt.key != evt.KEY_TAB) {			dojo.event.browser.stopEvent(evt);		} else {			if (!dojo.render.html.opera) {				try {					this.tabStart.focus();				}				catch (e) {				}			}		}	}}, showModalDialog:function () {	if (this.followScroll && !this._scrollConnected) {		this._scrollConnected = true;		dojo.event.connect(window, "onscroll", this, "_onScroll");	}	dojo.event.connect(document.documentElement, "onkey", this, "_onKey");	this.placeModalDialog();	this.setBackgroundOpacity();	this._sizeBackground();	this._showBackground();	this._fromTrap = true;	setTimeout(dojo.lang.hitch(this, function () {		try {			this.tabStart.focus();		}		catch (e) {		}	}), 50);}, hideModalDialog:function () {	if (this.focusElement) {		dojo.byId(this.focusElement).focus();		dojo.byId(this.focusElement).blur();	}	this.bg.style.display = "none";	this.bg.style.width = this.bg.style.height = "1px";	if (this.bgIframe.iframe) {		this.bgIframe.iframe.style.display = "none";	}	dojo.event.disconnect(document.documentElement, "onkey", this, "_onKey");	if (this._scrollConnected) {		this._scrollConnected = false;		dojo.event.disconnect(window, "onscroll", this, "_onScroll");	}}, _onScroll:function () {	var scroll_offset = dojo.html.getScroll().offset;	this.bg.style.top = scroll_offset.y + "px";	this.bg.style.left = scroll_offset.x + "px";	this.placeModalDialog();}, checkSize:function () {	if (this.isShowing()) {		this._sizeBackground();		this.placeModalDialog();		this.onResized();	}}, onBackgroundClick:function () {	if (this.lifetime - this.timeRemaining >= this.blockDuration) {		return;	}	this.hide();}});dojo.widget.defineWidget("dojo.widget.Dialog", [dojo.widget.ContentPane, dojo.widget.ModalDialogBase], {templateString:"<div id=\"${this.widgetId}\" class=\"dojoDialog\" dojoattachpoint=\"wrapper\">\n\t<span dojoattachpoint=\"tabStartOuter\" dojoonfocus=\"trapTabs\" dojoonblur=\"clearTrap\"\ttabindex=\"0\"></span>\n\t<span dojoattachpoint=\"tabStart\" dojoonfocus=\"trapTabs\" dojoonblur=\"clearTrap\" tabindex=\"0\"></span>\n\t<div dojoattachpoint=\"containerNode\" style=\"position: relative; z-index: 2;\"></div>\n\t<span dojoattachpoint=\"tabEnd\" dojoonfocus=\"trapTabs\" dojoonblur=\"clearTrap\" tabindex=\"0\"></span>\n\t<span dojoattachpoint=\"tabEndOuter\" dojoonfocus=\"trapTabs\" dojoonblur=\"clearTrap\" tabindex=\"0\"></span>\n</div>\n", blockDuration:0, lifetime:0, closeNode:"", postMixInProperties:function () {	dojo.widget.Dialog.superclass.postMixInProperties.apply(this, arguments);	if (this.closeNode) {		this.setCloseControl(this.closeNode);	}}, postCreate:function () {	dojo.widget.Dialog.superclass.postCreate.apply(this, arguments);	dojo.widget.ModalDialogBase.prototype.postCreate.apply(this, arguments);}, show:function () {	if (this.lifetime) {		this.timeRemaining = this.lifetime;		if (this.timerNode) {			this.timerNode.innerHTML = Math.ceil(this.timeRemaining / 1000);		}		if (this.blockDuration && this.closeNode) {			if (this.lifetime > this.blockDuration) {				this.closeNode.style.visibility = "hidden";			} else {				this.closeNode.style.display = "none";			}		}		if (this.timer) {			clearInterval(this.timer);		}		this.timer = setInterval(dojo.lang.hitch(this, "_onTick"), 100);	}	this.showModalDialog();	dojo.widget.Dialog.superclass.show.call(this);}, onLoad:function () {	this.placeModalDialog();	dojo.widget.Dialog.superclass.onLoad.call(this);}, fillInTemplate:function () {}, hide:function () {	this.hideModalDialog();	dojo.widget.Dialog.superclass.hide.call(this);	if (this.timer) {		clearInterval(this.timer);	}}, setTimerNode:function (node) {	this.timerNode = node;}, setCloseControl:function (node) {	this.closeNode = dojo.byId(node);	dojo.event.connect(this.closeNode, "onclick", this, "hide");}, setShowControl:function (node) {	node = dojo.byId(node);	dojo.event.connect(node, "onclick", this, "show");}, _onTick:function () {	if (this.timer) {		this.timeRemaining -= 100;		if (this.lifetime - this.timeRemaining >= this.blockDuration) {			if (this.closeNode) {				this.closeNode.style.visibility = "visible";			}		}		if (!this.timeRemaining) {			clearInterval(this.timer);			this.hide();		} else {			if (this.timerNode) {				this.timerNode.innerHTML = Math.ceil(this.timeRemaining / 1000);			}		}	}}});

⌨️ 快捷键说明

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