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

📄 richtext.js

📁 这是一个ajax的例子大家好好的看看就是一个鱼眼的效果
💻 JS
📖 第 1 页 / 共 4 页
字号:
		}	},	onKeyDown: function(/* Event */ e){		// summary: Fired on keydown		// we need this event at the moment to get the events from control keys		// such as the backspace. It might be possible to add this to Dojo, so that		// keyPress events can be emulated by the keyDown and keyUp detection.		if(dojo.isIE){			if(e.keyCode == dojo.keys.TAB && e.shiftKey && !e.ctrlKey && !e.altKey){				// focus the BODY so the browser will tab away from it instead				this.iframe.focus();			}else if(e.keyCode == dojo.keys.TAB && !e.shiftKey && !e.ctrlKey && !e.altKey){				// focus the BODY so the browser will tab away from it instead				this.tabStop.focus();			}else if(e.keyCode === dojo.keys.BACKSPACE && this.document.selection.type === "Control"){				// IE has a bug where if a non-text object is selected in the editor,		  // hitting backspace would act as if the browser's back button was		  // clicked instead of deleting the object. see #1069				dojo.stopEvent(e);				this.execCommand("delete");			}else if((65 <= e.keyCode&&e.keyCode <= 90) ||				(e.keyCode>=37&&e.keyCode<=40) // FIXME: get this from connect() instead!			){ //arrow keys				e.charCode = e.keyCode;				this.onKeyPress(e);			}		}else if(dojo.isMoz){			if(e.keyCode == dojo.keys.TAB && !e.shiftKey && !e.ctrlKey && !e.altKey && this.iframe){				// update iframe document title for screen reader				this.iframe.contentDocument.title = this._localizedIframeTitles.iframeFocusTitle;								// Place focus on the iframe. A subsequent tab or shift tab will put focus				// on the correct control.				this.iframe.focus();  // this.focus(); won't work				dojo.stopEvent(e);			}else if(e.keyCode == dojo.keys.TAB && e.shiftKey){				// if there is a toolbar, set focus to it, otherwise ignore				if(this.toolbar){					this.toolbar.focus();				}				dojo.stopEvent(e);			}		}	},	onKeyUp: function(e){		// summary: Fired on keyup		return;	},	KEY_CTRL: 1,	KEY_SHIFT: 2,	onKeyPress: function(e){		// summary: Fired on keypress		// handle the various key events		var modifiers = (e.ctrlKey && !e.altKey) ? this.KEY_CTRL : 0 | e.shiftKey ? this.KEY_SHIFT : 0;		var key = e.keyChar || e.keyCode;		if(this._keyHandlers[key]){			// console.debug("char:", e.key);			var handlers = this._keyHandlers[key], i = 0, h;			while((h = handlers[i++])){				if(modifiers == h.modifiers){					if(!h.handler.apply(this,arguments)){						e.preventDefault();					}					break;				}			}		}		// function call after the character has been inserted		setTimeout(dojo.hitch(this, function(){			this.onKeyPressed(e);		}), 1);	},	addKeyHandler: function(/*String*/key, /*Int*/modifiers, /*Function*/handler){		// summary: add a handler for a keyboard shortcut		if(!dojo.isArray(this._keyHandlers[key])){ this._keyHandlers[key] = []; }		this._keyHandlers[key].push({			modifiers: modifiers || 0,			handler: handler		});	},	onKeyPressed: function(/*Event*/e){		this.onDisplayChanged(/*e*/); // can't pass in e	},	onClick: function(/*Event*/e){//		console.info('onClick',this._tryDesignModeOn);		this.onDisplayChanged(e);	},	_onMouseDown: function(/*Event*/e){ // IE only to prevent 2 clicks to focus		if(!this._focused && !this.disabled){			this.focus();		}	},	_onBlur: function(e){		this.inherited(arguments);		var _c=this.getValue(true);		if(_c!=this.savedContent){			this.onChange(_c);			this.savedContent=_c;		}		if(dojo.isMoz && this.iframe){			this.iframe.contentDocument.title = this._localizedIframeTitles.iframeEditTitle;		} 	},	_initialFocus: true,	_onFocus: function(/*Event*/e){		// summary: Fired on focus		this.inherited(arguments);		if(dojo.isMoz && this._initialFocus){			this._initialFocus = false;			if(this.editNode.innerHTML.replace(/^\s+|\s+$/g, "") == "&nbsp;"){				this.placeCursorAtStart();//					this.execCommand("selectall");//					this.window.getSelection().collapseToStart();			}		}	},	// TODO: why is this needed - should we deprecate this ?	blur: function(){		// summary: remove focus from this instance		if(!dojo.isIE && this.window.document.documentElement && this.window.document.documentElement.focus){			this.window.document.documentElement.focus();		}else if(dojo.doc.body.focus){			dojo.doc.body.focus();		}	},	focus: function(){		// summary: move focus to this instance		if(!dojo.isIE){			dijit.focus(this.iframe);		}else if(this.editNode && this.editNode.focus){			// editNode may be hidden in display:none div, lets just punt in this case			//this.editNode.focus(); -> causes IE to scroll always (strict and quirks mode) to the top the Iframe 			// if we fire the event manually and let the browser handle the focusing, the latest  			// cursor position is focused like in FF                         			this.iframe.fireEvent('onfocus', document.createEventObject()); // createEventObject only in IE //		}else{// TODO: should we throw here?//			console.debug("Have no idea how to focus into the editor!");		}	},//		_lastUpdate: 0,	updateInterval: 200,	_updateTimer: null,	onDisplayChanged: function(/*Event*/e){		// summary:		//		This event will be fired everytime the display context		//		changes and the result needs to be reflected in the UI.		// description:		//		If you don't want to have update too often,		//		onNormalizedDisplayChanged should be used instead//			var _t=new Date();		if(!this._updateTimer){//				this._lastUpdate=_t;			if(this._updateTimer){				clearTimeout(this._updateTimer);			}			this._updateTimer=setTimeout(dojo.hitch(this,this.onNormalizedDisplayChanged),this.updateInterval);		}	},	onNormalizedDisplayChanged: function(){		// summary:		//		This event is fired every updateInterval ms or more		// description:		//		If something needs to happen immidiately after a		//		user change, please use onDisplayChanged instead		this._updateTimer=null;	},	onChange: function(newContent){		// summary:		//		this is fired if and only if the editor loses focus and		//		the content is changed//			console.log('onChange',newContent);	},	_normalizeCommand: function(/*String*/cmd){		// summary:		//		Used as the advice function by dojo.connect to map our		//		normalized set of commands to those supported by the target		//		browser		var command = cmd.toLowerCase();		if(command == "hilitecolor" && !dojo.isMoz){			command = "backcolor";		}		return command;	},	queryCommandAvailable: function(/*String*/command){		// summary:		//		Tests whether a command is supported by the host. Clients SHOULD check		//		whether a command is supported before attempting to use it, behaviour		//		for unsupported commands is undefined.		// command: The command to test for		var ie = 1;		var mozilla = 1 << 1;		var safari = 1 << 2;		var opera = 1 << 3;		var safari420 = 1 << 4;		var gt420 = dojo.isSafari;		function isSupportedBy(browsers){			return {				ie: Boolean(browsers & ie),				mozilla: Boolean(browsers & mozilla),				safari: Boolean(browsers & safari),				safari420: Boolean(browsers & safari420),				opera: Boolean(browsers & opera)			}		}		var supportedBy = null;		switch(command.toLowerCase()){			case "bold": case "italic": case "underline":			case "subscript": case "superscript":			case "fontname": case "fontsize":			case "forecolor": case "hilitecolor":			case "justifycenter": case "justifyfull": case "justifyleft":			case "justifyright": case "delete": case "selectall": case "toggledir":				supportedBy = isSupportedBy(mozilla | ie | safari | opera);				break;			case "createlink": case "unlink": case "removeformat":			case "inserthorizontalrule": case "insertimage":			case "insertorderedlist": case "insertunorderedlist":			case "indent": case "outdent": case "formatblock":			case "inserthtml": case "undo": case "redo": case "strikethrough":				supportedBy = isSupportedBy(mozilla | ie | opera | safari420);				break;			case "blockdirltr": case "blockdirrtl":			case "dirltr": case "dirrtl":			case "inlinedirltr": case "inlinedirrtl":				supportedBy = isSupportedBy(ie);				break;			case "cut": case "copy": case "paste":				supportedBy = isSupportedBy( ie | mozilla | safari420);				break;			case "inserttable":				supportedBy = isSupportedBy(mozilla | ie);				break;			case "insertcell": case "insertcol": case "insertrow":			case "deletecells": case "deletecols": case "deleterows":			case "mergecells": case "splitcell":				supportedBy = isSupportedBy(ie | mozilla);				break;			default: return false;		}		return (dojo.isIE && supportedBy.ie) ||			(dojo.isMoz && supportedBy.mozilla) ||			(dojo.isSafari && supportedBy.safari) ||			(gt420 && supportedBy.safari420) ||			(dojo.isOpera && supportedBy.opera);  // Boolean return true if the command is supported, false otherwise	},	execCommand: function(/*String*/command, argument){		// summary: Executes a command in the Rich Text area		// command: The command to execute		// argument: An optional argument to the command		var returnValue;		//focus() is required for IE to work		//In addition, focus() makes sure after the execution of		//the command, the editor receives the focus as expected		this.focus();		command = this._normalizeCommand(command);		if(argument != undefined){			if(command == "heading"){				throw new Error("unimplemented");			}else if((command == "formatblock") && dojo.isIE){				argument = '<'+argument+'>';			}		}		if(command == "inserthtml"){			argument=this._preFilterContent(argument);			if(dojo.isIE){				var insertRange = this.document.selection.createRange();				if(this.document.selection.type.toUpperCase()=='CONTROL'){					var n=insertRange.item(0);					while(insertRange.length){						insertRange.remove(insertRange.item(0));					}					n.outerHTML=argument;				}else{					insertRange.pasteHTML(argument);				}				insertRange.select();				//insertRange.collapse(true);				returnValue=true;			}else if(dojo.isMoz && !argument.length){				//mozilla can not inserthtml an empty html to delete current selection				//so we delete the selection instead in this case				dojo.withGlobal(this.window,'remove',dijit._editor.selection);				returnValue=true;			}else{				returnValue=this.document.execCommand(command, false, argument);			}		}else if(			(command == "unlink")&&			(this.queryCommandEnabled("unlink"))&&			(dojo.isMoz || dojo.isSafari)		){			// fix up unlink in Mozilla to unlink the link and not just the selection			// grab selection			// Mozilla gets upset if we just store the range so we have to			// get the basic properties and recreate to save the selection			var selection = this.window.getSelection();			//	var selectionRange = selection.getRangeAt(0);			//	var selectionStartContainer = selectionRange.startContainer;			//	var selectionStartOffset = selectionRange.startOffset;			//	var selectionEndContainer = selectionRange.endContainer;			//	var selectionEndOffset = selectionRange.endOffset;			// select our link and unlink			var a = dojo.withGlobal(this.window, "getAncestorElement",dijit._editor.selection, ['a']);			dojo.withGlobal(this.window, "selectElement", dijit._editor.selection, [a]);			returnValue=this.document.execCommand("unlink", false, null);		}else if((command == "hilitecolor")&&(dojo.isMoz)){//				// mozilla doesn't support hilitecolor properly when useCSS is//				// set to false (bugzilla #279330)			this.document.execCommand("styleWithCSS", false, true);			returnValue = this.document.execCommand(command, false, argument);			this.document.execCommand("styleWithCSS", false, false);		}else if((dojo.isIE)&&( (command == "backcolor")||(command == "forecolor") )){			// Tested under IE 6 XP2, no problem here, comment out			// IE weirdly collapses ranges when we exec these commands, so prevent it//				var tr = this.document.selection.createRange();			argument = arguments.length > 1 ? argument : null;			returnValue = this.document.execCommand(command, false, argument);			// timeout is workaround for weird IE behavior were the text			// selection gets correctly re-created, but subsequent input			// apparently isn't bound to it//				setTimeout(function(){tr.select();}, 1);		}else{

⌨️ 快捷键说明

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