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

📄 editor2.js

📁 ajax-dwr方式的即时消息演示程序 jsp-servlet,ajax技术实现
💻 JS
📖 第 1 页 / 共 2 页
字号:
{	execute: function(){		if(!this.dialog){			if(!this.dialogParas.contentFile || !this.dialogParas.contentClass){				alert("contentFile and contentClass should be set for dojo.widget.Editor2DialogCommand.dialogParas!");				return;			}			this.dialog = dojo.widget.createWidget("Editor2Dialog", this.dialogParas);			dojo.body().appendChild(this.dialog.domNode);			dojo.event.connect(this, "destroy", this.dialog, "destroy");		}		this.dialog.show();	}});// summary://		dojo.widget.Editor2 is the WYSIWYG editor in dojo with toolbar. It supports a plugin//		framework which can be used to extend the functionalities of the editor, such as//		adding a context menu, table operation etc.// description://		Plugins are available using dojo's require syntax. Please find available built-in plugins//		under src/widget/Editor2Plugin.dojo.widget.defineWidget(	"dojo.widget.Editor2",	dojo.widget.RichText,	{//		// String: url to which save action should send content to//		saveUrl: "",//		// String: HTTP method for save (post or get)//		saveMethod: "post",//		saveArgName: "editorContent",//		closeOnSave: false,		// Boolean: Whether to share toolbar with other instances of Editor2		shareToolbar: false,		// Boolean: Whether the toolbar should scroll to keep it in the view		toolbarAlwaysVisible: false,//		htmlEditing: false,		toolbarWidget: null,		scrollInterval: null,		// Object: dojo.uri.Uri object to specify the template file for the toolbar		toolbarTemplatePath: dojo.uri.dojoUri("src/widget/templates/EditorToolbarOneline.html"),		// Object: dojo.uri.Uri object to specify the css file for the toolbar		toolbarTemplateCssPath: null,//		toolbarTemplatePath: dojo.uri.dojoUri("src/widget/templates/Editor2/EditorToolbarFCKStyle.html"),//		toolbarTemplateCssPath: dojo.uri.dojoUri("src/widget/templates/Editor2/FCKDefault/EditorToolbarFCKStyle.css"),		_inSourceMode: false,		_htmlEditNode: null,		editorOnLoad: function(){			// summary:			//		Create toolbar and other initialization routines. This is called after			//		the finish of the loading of document in the editing element//			dojo.profile.start("dojo.widget.Editor2::editorOnLoad");			dojo.event.topic.publish("dojo.widget.Editor2::preLoadingToolbar", this);			if(this.toolbarAlwaysVisible){				dojo.require("dojo.widget.Editor2Plugin.AlwaysShowToolbar");			}			var toolbars = dojo.widget.byType("Editor2Toolbar");			if((!toolbars.length)||(!this.shareToolbar)){				if(this.toolbarWidget){					this.toolbarWidget.show();					//re-add the toolbar to the new domNode (caused by open() on another element)					dojo.html.insertBefore(this.toolbarWidget.domNode, this.domNode.firstChild);				}else{					var tbOpts = {};					tbOpts.templatePath = this.toolbarTemplatePath;					if(this.toolbarTemplateCssPath){						tbOpts.templateCssPath = this.toolbarTemplateCssPath;					}					this.toolbarWidget = dojo.widget.createWidget("Editor2Toolbar", tbOpts, this.domNode.firstChild, "before");					dojo.event.connect(this, "close", this.toolbarWidget, "hide");					this.toolbarLoaded();				}			}else{				// FIXME: 	selecting in one shared toolbar doesn't clobber				// 			selection in the others. This is problematic.				this.toolbarWidget = toolbars[0];			}			dojo.event.topic.registerPublisher("Editor2.clobberFocus", this, "clobberFocus");			dojo.event.topic.subscribe("Editor2.clobberFocus", this, "setBlur");			dojo.event.topic.publish("dojo.widget.Editor2::onLoad", this);//			dojo.profile.end("dojo.widget.Editor2::editorOnLoad");		},		//event for plugins to use		toolbarLoaded: function(){			// summary:			//		Fired when the toolbar for this editor is created.			//		This event is for plugins to use		},		//TODO: provide a query mechanism about loaded plugins?		registerLoadedPlugin: function(/*Object*/obj){			// summary: Register a plugin which is loaded for this instance			if(!this.loadedPlugins){				this.loadedPlugins = [];			}			this.loadedPlugins.push(obj);		},		unregisterLoadedPlugin: function(/*Object*/obj){			// summery: Delete a loaded plugin for this instance			for(var i in this.loadedPlugins){				if(this.loadedPlugins[i] === obj){					delete this.loadedPlugins[i];					return;				}			}			dojo.debug("dojo.widget.Editor2.unregisterLoadedPlugin: unknow plugin object: "+obj);		},		//overload the original ones to provide extra commands		execCommand: function(/*String*/command, argument){			switch(command.toLowerCase()){				case 'htmltoggle':					this.toggleHtmlEditing();					break;				default:					dojo.widget.Editor2.superclass.execCommand.apply(this, arguments);			}		},		queryCommandEnabled: function(/*String*/command, argument){			switch(command.toLowerCase()){				case 'htmltoggle':					return true;				default:					if(this._inSourceMode){ return false;}					return dojo.widget.Editor2.superclass.queryCommandEnabled.apply(this, arguments);			}		},		queryCommandState: function(/*String*/command, argument){			switch(command.toLowerCase()){				case 'htmltoggle':					return this._inSourceMode;				default:					return dojo.widget.Editor2.superclass.queryCommandState.apply(this, arguments);			}		},		onClick: function(/*Event*/e){			dojo.widget.Editor2.superclass.onClick.call(this, e);			//if Popup is used, call dojo.widget.PopupManager.onClick			//manually when click in the editing area to close all			//open popups (dropdowns)			if(dojo.widget.PopupManager){				if(!e){ //IE					e = this.window.event;				}				dojo.widget.PopupManager.onClick(e);			}		},		clobberFocus: function(){			// summary: stub to signal other instances to clobber focus		},		toggleHtmlEditing: function(){			// summary: toggle between WYSIWYG mode and HTML source mode			if(this===dojo.widget.Editor2Manager.getCurrentInstance()){				if(!this._inSourceMode){					this._inSourceMode = true;					if(!this._htmlEditNode){						this._htmlEditNode = dojo.doc().createElement("textarea");						dojo.html.insertAfter(this._htmlEditNode, this.editorObject);					}					this._htmlEditNode.style.display = "";					this._htmlEditNode.style.width = "100%";					this._htmlEditNode.style.height = dojo.html.getBorderBox(this.editNode).height+"px";					this._htmlEditNode.value = this.editNode.innerHTML;					//activeX object (IE) doesn't like to be hidden, so move it outside of screen instead					with(this.editorObject.style){						position = "absolute";						left = "-2000px";						top = "-2000px";					}				}else{					this._inSourceMode = false;					//In IE activeX mode, if _htmlEditNode is focused,					//when toggling, an error would occur, so unfocus it					this._htmlEditNode.blur();					with(this.editorObject.style){						position = "";						left = "";						top = "";					}					dojo.lang.setTimeout(this, "replaceEditorContent", 1, this._htmlEditNode.value);					this._htmlEditNode.style.display = "none";					this.focus();				}				this.updateToolbar(true);			}		},		setFocus: function(){			// summary: focus is set on this instance//			dojo.debug("setFocus: start "+this.widgetId);			if(dojo.widget.Editor2Manager.getCurrentInstance() === this){ return; }			this.clobberFocus();//			dojo.debug("setFocus:", this);			dojo.widget.Editor2Manager.setCurrentInstance(this);		},		setBlur: function(){			// summary: focus on this instance is lost//			 dojo.debug("setBlur:", this);			//dojo.event.disconnect(this.toolbarWidget, "exec", this, "execCommand");		},		saveSelection: function(){			// summary: save the current selection for restoring it			this._bookmark = null;			this._bookmark = dojo.withGlobal(this.window, dojo.html.selection.getBookmark);		},		restoreSelection: function(){			// summary: restore the last saved selection			if(this._bookmark){				this.focus(); //require for none-activeX IE				dojo.withGlobal(this.window, "moveToBookmark", dojo.html.selection, [this._bookmark]);				this._bookmark = null;			}else{				dojo.debug("restoreSelection: no saved selection is found!");			}		},		_updateToolbarLastRan: null,		_updateToolbarTimer: null,		_updateToolbarFrequency: 500,		updateToolbar: function(/*Boolean*/force){			// summary: update the associated toolbar of this Editor2			if((!this.isLoaded)||(!this.toolbarWidget)){ return; }			// keeps the toolbar from updating too frequently			// TODO: generalize this functionality?			var diff = new Date() - this._updateToolbarLastRan;			if( (!force)&&(this._updateToolbarLastRan)&&				((diff < this._updateToolbarFrequency)) ){				clearTimeout(this._updateToolbarTimer);				var _this = this;				this._updateToolbarTimer = setTimeout(function() {					_this.updateToolbar();				}, this._updateToolbarFrequency/2);				return;			}else{				this._updateToolbarLastRan = new Date();			}			// end frequency checker			//IE has the habit of generating events even when this editor is blurred, prevent this			if(dojo.widget.Editor2Manager.getCurrentInstance() !== this){ return; }			this.toolbarWidget.update();		},		destroy: function(/*Boolean*/finalize){			this._htmlEditNode = null;			dojo.event.disconnect(this, "close", this.toolbarWidget, "hide");			if(!finalize){				this.toolbarWidget.destroy();			}			dojo.widget.Editor2.superclass.destroy.call(this);		},		onDisplayChanged: function(/*Object*/e){			dojo.widget.Editor2.superclass.onDisplayChanged.call(this,e);			this.updateToolbar();		},		onLoad: function(){			try{				dojo.widget.Editor2.superclass.onLoad.call(this);			}catch(e){ // FIXME: debug why this is throwing errors in IE!				dojo.debug(e);			}			this.editorOnLoad();		},		onFocus: function(){			dojo.widget.Editor2.superclass.onFocus.call(this);			this.setFocus();		},		//overload to support source editing mode		getEditorContent: function(){			if(this._inSourceMode){				this.replaceEditorContent(this._htmlEditNode.value);			}			return dojo.widget.Editor2.superclass.getEditorContent.call(this);		}		/*,		// FIXME: probably not needed any more with new design, but need to verify		_save: function(e){			// FIXME: how should this behave when there's a larger form in play?			if(!this.isClosed){				dojo.debug("save attempt");				if(this.saveUrl.length){					var content = {};					content[this.saveArgName] = this.getEditorContent();					dojo.io.bind({						method: this.saveMethod,						url: this.saveUrl,						content: content					});				}else{					dojo.debug("please set a saveUrl for the editor");				}				if(this.closeOnSave){					this.close(e.getName().toLowerCase() == "save");				}			}		}*/	},	"html");

⌨️ 快捷键说明

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