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

📄 richtext.js

📁 这是一个ajax的例子大家好好的看看就是一个鱼眼的效果
💻 JS
📖 第 1 页 / 共 4 页
字号:
if(!dojo._hasResource["dijit._editor.RichText"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.dojo._hasResource["dijit._editor.RichText"] = true;dojo.provide("dijit._editor.RichText");dojo.require("dijit._Widget");dojo.require("dijit._editor.selection");dojo.require("dijit._editor.html");dojo.require("dojo.i18n");dojo.requireLocalization("dijit.form", "Textarea", null, "zh,pt,da,tr,ru,de,ROOT,sv,ja,he,fi,nb,el,ar,pt-pt,cs,fr,es,ko,nl,zh-tw,pl,it,hu");// used to restore content when user leaves this page then comes back// but do not try doing dojo.doc.write if we are using xd loading.// dojo.doc.write will only work if RichText.js is included in the dojo.js// file. If it is included in dojo.js and you want to allow rich text saving// for back/forward actions, then set dojo.config.allowXdRichTextSave = true.if(!dojo.config["useXDomain"] || dojo.config["allowXdRichTextSave"]){	if(dojo._postLoad){		(function(){			var savetextarea = dojo.doc.createElement('textarea');			savetextarea.id = dijit._scopeName + "._editor.RichText.savedContent";			var s = savetextarea.style;			s.display='none';			s.position='absolute';			s.top="-100px";			s.left="-100px";			s.height="3px";			s.width="3px";			dojo.body().appendChild(savetextarea);		})();	}else{		//dojo.body() is not available before onLoad is fired		try{			dojo.doc.write('<textarea id="' + dijit._scopeName + '._editor.RichText.savedContent" ' +				'style="display:none;position:absolute;top:-100px;left:-100px;height:3px;width:3px;overflow:hidden;"></textarea>');		}catch(e){ }	}}dojo.declare("dijit._editor.RichText", dijit._Widget, {	constructor: function(){		// summary:		//		dijit._editor.RichText is the core of the WYSIWYG editor in dojo, which		//		provides the basic editing features. It also encapsulates the differences		//		of different js engines for various browsers		//		// contentPreFilters: Array		//		pre content filter function register array.		//		these filters will be executed before the actual		//		editing area get the html content		this.contentPreFilters = [];		// contentPostFilters: Array		//		post content filter function register array.		//		these will be used on the resulting html		//		from contentDomPostFilters. The resuling		//		content is the final html (returned by getValue())		this.contentPostFilters = [];		// contentDomPreFilters: Array		//		pre content dom filter function register array.		//		these filters are applied after the result from		//		contentPreFilters are set to the editing area		this.contentDomPreFilters = [];		// contentDomPostFilters: Array		//		post content dom filter function register array.		//		these filters are executed on the editing area dom		//		the result from these will be passed to contentPostFilters		this.contentDomPostFilters = [];		// editingAreaStyleSheets: Array		//		array to store all the stylesheets applied to the editing area		this.editingAreaStyleSheets=[];		this._keyHandlers = {};		this.contentPreFilters.push(dojo.hitch(this, "_preFixUrlAttributes"));		if(dojo.isMoz){			this.contentPreFilters.push(this._fixContentForMoz);			this.contentPostFilters.push(this._removeMozBogus);		}else if(dojo.isSafari){			this.contentPostFilters.push(this._removeSafariBogus);		}		//this.contentDomPostFilters.push(this._postDomFixUrlAttributes);		this.onLoadDeferred = new dojo.Deferred();	},	// inheritWidth: Boolean	//		whether to inherit the parent's width or simply use 100%	inheritWidth: false,	// focusOnLoad: Boolean	//		whether focusing into this instance of richtext when page onload	focusOnLoad: false,	// name: String	//		If a save name is specified the content is saved and restored when the user	//		leave this page can come back, or if the editor is not properly closed after	//		editing has started.	name: "",	// styleSheets: String	//		semicolon (";") separated list of css files for the editing area	styleSheets: "",	// _content: String	//		temporary content storage	_content: "",	// height: String	//		set height to fix the editor at a specific height, with scrolling.	//		By default, this is 300px. If you want to have the editor always	//		resizes to accommodate the content, use AlwaysShowToolbar plugin	//		and set height=""	height: "300px",	// minHeight: String	//		The minimum height that the editor should have	minHeight: "1em",		// isClosed: Boolean	isClosed: true,	// isLoaded: Boolean	isLoaded: false,	// _SEPARATOR: String	//		used to concat contents from multiple textareas into a single string	_SEPARATOR: "@@**%%__RICHTEXTBOUNDRY__%%**@@",	// onLoadDeferred: dojo.Deferred	//		deferred which is fired when the editor finishes loading	onLoadDeferred: null,	postCreate: function(){		// summary: init		dojo.publish(dijit._scopeName + "._editor.RichText::init", [this]);		this.open();		this.setupDefaultShortcuts();	},	setupDefaultShortcuts: function(){		// summary: add some default key handlers		// description:		// 		Overwrite this to setup your own handlers. The default		// 		implementation does not use Editor commands, but directly		//		executes the builtin commands within the underlying browser		//		support.		var exec = function(cmd, arg){			return arguments.length == 1 ? function(){ this.execCommand(cmd); } :				function(){ this.execCommand(cmd, arg); };		};		var ctrlKeyHandlers = { b: exec("bold"),			i: exec("italic"),			u: exec("underline"),			a: exec("selectall"),			s: function(){ this.save(true); },			"1": exec("formatblock", "h1"),			"2": exec("formatblock", "h2"),			"3": exec("formatblock", "h3"),			"4": exec("formatblock", "h4"),			"\\": exec("insertunorderedlist") };		if(!dojo.isIE){			ctrlKeyHandlers.Z = exec("redo"); //FIXME: undo?		}		for(var key in ctrlKeyHandlers){			this.addKeyHandler(key, this.KEY_CTRL, ctrlKeyHandlers[key]);		}	},	// events: Array	//		 events which should be connected to the underlying editing area	events: ["onKeyPress", "onKeyDown", "onKeyUp", "onClick"],	// events: Array	//		 events which should be connected to the underlying editing	//		 area, events in this array will be addListener with	//		 capture=true	captureEvents: [],	_editorCommandsLocalized: false,	_localizeEditorCommands: function(){		if(this._editorCommandsLocalized){			return;		}		this._editorCommandsLocalized = true;		//in IE, names for blockformat is locale dependent, so we cache the values here		//if the normal way fails, we try the hard way to get the list		//do not use _cacheLocalBlockFormatNames here, as it will		//trigger security warning in IE7		//in the array below, ul can not come directly after ol,		//otherwise the queryCommandValue returns Normal for it		var formats = ['p', 'pre', 'address', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ol', 'div', 'ul'];		var localhtml = "", format, i=0;		while((format=formats[i++])){			if(format.charAt(1) != 'l'){				localhtml += "<"+format+"><span>content</span></"+format+">";			}else{				localhtml += "<"+format+"><li>content</li></"+format+">";			}		}		//queryCommandValue returns empty if we hide editNode, so move it out of screen temporary		var div=dojo.doc.createElement('div');		div.style.position = "absolute";		div.style.left = "-2000px";		div.style.top = "-2000px";		dojo.doc.body.appendChild(div);		div.innerHTML = localhtml;		var node = div.firstChild;		while(node){			dijit._editor.selection.selectElement(node.firstChild);			dojo.withGlobal(this.window, "selectElement", dijit._editor.selection, [node.firstChild]);			var nativename = node.tagName.toLowerCase();			this._local2NativeFormatNames[nativename] = dojo.doc.queryCommandValue("formatblock");//this.queryCommandValue("formatblock");			this._native2LocalFormatNames[this._local2NativeFormatNames[nativename]] = nativename;			node = node.nextSibling;		}		dojo.doc.body.removeChild(div);	},	open: function(/*DomNode?*/element){		// summary:		//		Transforms the node referenced in this.domNode into a rich text editing		//		node. This will result in the creation and replacement with an <iframe>		//		if designMode(FF)/contentEditable(IE) is used.		if((!this.onLoadDeferred)||(this.onLoadDeferred.fired >= 0)){			this.onLoadDeferred = new dojo.Deferred();		}		if(!this.isClosed){ this.close(); }		dojo.publish(dijit._scopeName + "._editor.RichText::open", [ this ]);		this._content = "";		if((arguments.length == 1)&&(element["nodeName"])){ this.domNode = element; } // else unchanged		var html;		if(	(this.domNode["nodeName"])&&			(this.domNode.nodeName.toLowerCase() == "textarea")){			// if we were created from a textarea, then we need to create a			// new editing harness node.			this.textarea = this.domNode;			this.name=this.textarea.name;			html = this._preFilterContent(this.textarea.value);			this.domNode = dojo.doc.createElement("div");			this.domNode.setAttribute('widgetId',this.id);			this.textarea.removeAttribute('widgetId');			this.domNode.cssText = this.textarea.cssText;			this.domNode.className += " "+this.textarea.className;			dojo.place(this.domNode, this.textarea, "before");			var tmpFunc = dojo.hitch(this, function(){				//some browsers refuse to submit display=none textarea, so				//move the textarea out of screen instead				dojo.attr(this.textarea, 'tabIndex', '-1');				with(this.textarea.style){					display = "block";					position = "absolute";					left = top = "-1000px";					if(dojo.isIE){ //nasty IE bug: abnormal formatting if overflow is not hidden						this.__overflow = overflow;						overflow = "hidden";					}				}			});			if(dojo.isIE){				setTimeout(tmpFunc, 10);			}else{				tmpFunc();			}			// this.domNode.innerHTML = html;//				if(this.textarea.form){//					// FIXME: port: this used to be before advice!!!//					dojo.connect(this.textarea.form, "onsubmit", this, function(){//						// FIXME: should we be calling close() here instead?//						this.textarea.value = this.getValue();//					});//				}		}else{			html = this._preFilterContent(dijit._editor.getChildrenHtml(this.domNode));			this.domNode.innerHTML = '';		}		if(html == ""){ html = "&nbsp;"; }		var content = dojo.contentBox(this.domNode);		// var content = dojo.contentBox(this.srcNodeRef);		this._oldHeight = content.h;		this._oldWidth = content.w;		// If we're a list item we have to put in a blank line to force the		// bullet to nicely align at the top of text		if(	(this.domNode["nodeName"]) &&			(this.domNode.nodeName == "LI") ){			this.domNode.innerHTML = " <br>";		}		this.editingArea = dojo.doc.createElement("div");		this.domNode.appendChild(this.editingArea);		if(this.name != "" && (!dojo.config["useXDomain"] || dojo.config["allowXdRichTextSave"])){			var saveTextarea = dojo.byId(dijit._scopeName + "._editor.RichText.savedContent");			if(saveTextarea.value != ""){				var datas = saveTextarea.value.split(this._SEPARATOR), i=0, dat;				while((dat=datas[i++])){					var data = dat.split(":");					if(data[0] == this.name){						html = data[1];						datas.splice(i, 1);						break;					}				}			}			// FIXME: need to do something different for Opera/Safari			this.connect(window, "onbeforeunload", "_saveContent");			// dojo.connect(window, "onunload", this, "_saveContent");		}		this.isClosed = false;		// Safari's selections go all out of whack if we do it inline,		// so for now IE is our only hero		//if(typeof dojo.doc.body.contentEditable != "undefined"){		if(dojo.isIE || dojo.isSafari || dojo.isOpera){ // contentEditable, easy					if(dojo.config["useXDomain"] && !dojo.config["dojoBlankHtmlUrl"]){				console.debug("dijit._editor.RichText: When using cross-domain Dojo builds,"				+ " please save dojo/resources/blank.html to your domain and set djConfig.dojoBlankHtmlUrl"				+ " to the path on your domain to blank.html");			}			var burl = dojo.config["dojoBlankHtmlUrl"] || (dojo.moduleUrl("dojo", "resources/blank.html")+"");			var ifr = this.editorObject = this.iframe = dojo.doc.createElement('iframe');			ifr.id = this.id+"_iframe";			ifr.src = burl;			ifr.style.border = "none";			ifr.style.width = "100%";			ifr.frameBorder = 0;			// ifr.style.scrolling = this.height ? "auto" : "vertical";			this.editingArea.appendChild(ifr);			var h = null; // set later in non-ie6 branch			var loadFunc = dojo.hitch( this, function(){				if(h){ dojo.disconnect(h); h = null; }				this.window = ifr.contentWindow;				var d = this.document = this.window.document;				d.open();				d.write(this._getIframeDocTxt(html));				d.close();				if(dojo.isIE >= 7){					if(this.height){						ifr.style.height = this.height;					}					if(this.minHeight){

⌨️ 快捷键说明

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