tiny_mce_src.js

来自「很棒的在线教学系统」· JavaScript 代码 · 共 2,013 行 · 第 1/5 页

JS
2,013
字号
		for (i=0; i<a.length; i++)			this.buttonMap[a[i]] = i;	},	submitPatch : function() {		tinyMCE.removeTinyMCEFormElements(this);		tinyMCE.triggerSave();		this.mceOldSubmit();		tinyMCE.isNotDirty = true;	},	onLoad : function() {		if (tinyMCE.isMSIE && !tinyMCE.isOpera && window.event.type == "readystatechange" && document.readyState != "complete")			return true;		if (tinyMCE.isLoaded)			return true;		tinyMCE.isLoaded = true;		tinyMCE.dispatchCallback(null, 'onpageload', 'onPageLoad');		for (var c=0; c<tinyMCE.configs.length; c++) {			tinyMCE.settings = tinyMCE.configs[c];			var selector = tinyMCE.getParam("editor_selector");			var deselector = tinyMCE.getParam("editor_deselector");			var elementRefAr = new Array();			// Add submit triggers			if (document.forms && tinyMCE.settings['add_form_submit_trigger'] && !tinyMCE.submitTriggers) {				for (var i=0; i<document.forms.length; i++) {					var form = document.forms[i];					tinyMCE.addEvent(form, "submit", TinyMCE_Engine.prototype.handleEvent);					tinyMCE.addEvent(form, "reset", TinyMCE_Engine.prototype.handleEvent);					tinyMCE.submitTriggers = true; // Do it only once					// Patch the form.submit function					if (tinyMCE.settings['submit_patch']) {						try {							form.mceOldSubmit = form.submit;							form.submit = TinyMCE_Engine.prototype.submitPatch;						} catch (e) {							// Do nothing						}					}				}			}			// Add editor instances based on mode			var mode = tinyMCE.settings['mode'];			switch (mode) {				case "exact":					var elements = tinyMCE.getParam('elements', '', true, ',');					for (var i=0; i<elements.length; i++) {						var element = tinyMCE._getElementById(elements[i]);						var trigger = element ? element.getAttribute(tinyMCE.settings['textarea_trigger']) : "";						if (tinyMCE.getAttrib(element, "class").indexOf(deselector) != -1)							continue;						if (trigger == "false")							continue;						if (tinyMCE.settings['ask'] && element) {							elementRefAr[elementRefAr.length] = element;							continue;						}						if (element)							tinyMCE.addMCEControl(element, elements[i]);						else if (tinyMCE.settings['debug'])							alert("Error: Could not find element by id or name: " + elements[i]);					}				break;				case "specific_textareas":				case "textareas":					var nodeList = document.getElementsByTagName("textarea");					for (var i=0; i<nodeList.length; i++) {						var elm = nodeList.item(i);						var trigger = elm.getAttribute(tinyMCE.settings['textarea_trigger']);						if (selector != '' && tinyMCE.getAttrib(elm, "class").indexOf(selector) == -1)							continue;						if (selector != '')							trigger = selector != "" ? "true" : "";						if (tinyMCE.getAttrib(elm, "class").indexOf(deselector) != -1)							continue;						if ((mode == "specific_textareas" && trigger == "true") || (mode == "textareas" && trigger != "false"))							elementRefAr[elementRefAr.length] = elm;					}				break;			}			for (var i=0; i<elementRefAr.length; i++) {				var element = elementRefAr[i];				var elementId = element.name ? element.name : element.id;				if (tinyMCE.settings['ask']) {					// Focus breaks in Mozilla					if (tinyMCE.isGecko) {						var settings = tinyMCE.settings;						tinyMCE.addEvent(element, "focus", function (e) {window.setTimeout(function() {TinyMCE_Engine.prototype.confirmAdd(e, settings);}, 10);});					} else {						var settings = tinyMCE.settings;						tinyMCE.addEvent(element, "focus", function () { TinyMCE_Engine.prototype.confirmAdd(null, settings); });					}				} else					tinyMCE.addMCEControl(element, elementId);			}			// Handle auto focus			if (tinyMCE.settings['auto_focus']) {				window.setTimeout(function () {					var inst = tinyMCE.getInstanceById(tinyMCE.settings['auto_focus']);					inst.selection.selectNode(inst.getBody(), true, true);					inst.contentWindow.focus();				}, 10);			}			tinyMCE.dispatchCallback(null, 'oninit', 'onInit');		}	},	isInstance : function(o) {		return o != null && typeof(o) == "object" && o.isTinyMCE_Control;	},	getParam : function(name, default_value, strip_whitespace, split_chr) {		var value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];		// Fix bool values		if (value == "true" || value == "false")			return (value == "true");		if (strip_whitespace)			value = tinyMCE.regexpReplace(value, "[ \t\r\n]", "");		if (typeof(split_chr) != "undefined" && split_chr != null) {			value = value.split(split_chr);			var outArray = new Array();			for (var i=0; i<value.length; i++) {				if (value[i] && value[i] != "")					outArray[outArray.length] = value[i];			}			value = outArray;		}		return value;	},	getLang : function(name, default_value, parse_entities) {		var value = (typeof(tinyMCELang[name]) == "undefined") ? default_value : tinyMCELang[name];		if (parse_entities)			value = tinyMCE.entityDecode(value);		return value;	},	entityDecode : function(s) {		var e = document.createElement("div");		e.innerHTML = s;		return e.innerHTML;	},	addToLang : function(prefix, ar) {		for (var key in ar) {			if (typeof(ar[key]) == 'function')				continue;			tinyMCELang[(key.indexOf('lang_') == -1 ? 'lang_' : '') + (prefix != '' ? (prefix + "_") : '') + key] = ar[key];		}	//	for (var key in ar)	//		tinyMCELang[(key.indexOf('lang_') == -1 ? 'lang_' : '') + (prefix != '' ? (prefix + "_") : '') + key] = "|" + ar[key] + "|";	},	triggerNodeChange : function(focus, setup_content) {		if (tinyMCE.selectedInstance) {			var inst = tinyMCE.selectedInstance;			var editorId = inst.editorId;			var elm = (typeof(setup_content) != "undefined" && setup_content) ? tinyMCE.selectedElement : inst.getFocusElement();			var undoIndex = -1;			var undoLevels = -1;			var anySelection = false;			var selectedText = inst.selection.getSelectedText();			if (setup_content && tinyMCE.isGecko && inst.isHidden())				elm = inst.getBody();			inst.switchSettings();			if (tinyMCE.settings["auto_resize"]) {				var doc = inst.getDoc();				inst.iframeElement.style.width = doc.body.offsetWidth + "px";				inst.iframeElement.style.height = doc.body.offsetHeight + "px";			}			if (tinyMCE.selectedElement)				anySelection = (tinyMCE.selectedElement.nodeName.toLowerCase() == "img") || (selectedText && selectedText.length > 0);			if (tinyMCE.settings['custom_undo_redo']) {				undoIndex = inst.undoRedo.undoIndex;				undoLevels = inst.undoRedo.undoLevels.length;			}			tinyMCE.dispatchCallback(inst, 'handle_node_change_callback', 'handleNodeChange', editorId, elm, undoIndex, undoLevels, inst.visualAid, anySelection, setup_content);		}		if (this.selectedInstance && (typeof(focus) == "undefined" || focus))			this.selectedInstance.contentWindow.focus();	},	_customCleanup : function(inst, type, content) {		var pl, po, i;		// Call custom cleanup		var customCleanup = tinyMCE.settings['cleanup_callback'];		if (customCleanup != "" && eval("typeof(" + customCleanup + ")") != "undefined")			content = eval(customCleanup + "(type, content, inst);");		// Trigger plugin cleanups		pl = inst.plugins;		for (i=0; i<pl.length; i++) {			po = tinyMCE.plugins[pl[i]];			if (po && po.cleanup)				content = po.cleanup(type, content, inst);		}		return content;	},	setContent : function(h) {		if (tinyMCE.selectedInstance) {			tinyMCE.selectedInstance.execCommand('mceSetContent', false, h);			tinyMCE.selectedInstance.repaint();		}	},	importThemeLanguagePack : function(name) {		if (typeof(name) == "undefined")			name = tinyMCE.settings['theme'];		tinyMCE.loadScript(tinyMCE.baseURL + '/themes/' + name + '/langs/' + tinyMCE.settings['language'] + '.js');	},	importPluginLanguagePack : function(name, valid_languages) {		var lang = "en";		valid_languages = valid_languages.split(',');		for (var i=0; i<valid_languages.length; i++) {			if (tinyMCE.settings['language'] == valid_languages[i])				lang = tinyMCE.settings['language'];		}		tinyMCE.loadScript(tinyMCE.baseURL + '/plugins/' + name + '/langs/' + lang +  '.js');	},	applyTemplate : function(h, as) {		var i, s, ar = h.match(new RegExp('\\{\\$[a-z0-9_]+\\}', 'gi'));		for (i=ar.length-1; i>=0; i--) {			s = ar[i].substring(2, ar[i].length-1);			if (s.indexOf('lang_') == 0 && tinyMCELang[s])				h = tinyMCE.replaceVar(h, s, tinyMCELang[s]);			else if (as && as[s])				h = tinyMCE.replaceVar(h, s, as[s]);			else if (tinyMCE.settings[s])				h = tinyMCE.replaceVar(h, s, tinyMCE.settings[s]);		}		h = tinyMCE.replaceVar(h, "themeurl", tinyMCE.themeURL);		return h;	},	replaceVar : function(h, r, v) {		return h.replace(new RegExp('{\\\$' + r + '}', 'g'), v);	},	openWindow : function(template, args) {		var html, width, height, x, y, resizable, scrollbars, url;		args['mce_template_file'] = template['file'];		args['mce_width'] = template['width'];		args['mce_height'] = template['height'];		tinyMCE.windowArgs = args;		html = template['html'];		if (!(width = parseInt(template['width'])))			width = 320;		if (!(height = parseInt(template['height'])))			height = 200;		// Add to height in M$ due to SP2 WHY DON'T YOU GUYS IMPLEMENT innerWidth of windows!!		if (tinyMCE.isMSIE)			height += 40;		else			height += 20;		x = parseInt(screen.width / 2.0) - (width / 2.0);		y = parseInt(screen.height / 2.0) - (height / 2.0);		resizable = (args && args['resizable']) ? args['resizable'] : "no";		scrollbars = (args && args['scrollbars']) ? args['scrollbars'] : "no";		if (template['file'].charAt(0) != '/' && template['file'].indexOf('://') == -1)			url = tinyMCE.baseURL + "/themes/" + tinyMCE.getParam("theme") + "/" + template['file'];		else			url = template['file'];		// Replace all args as variables in URL		for (var name in args) {			if (typeof(args[name]) == 'function')				continue;			url = tinyMCE.replaceVar(url, name, escape(args[name]));		}		if (html) {			html = tinyMCE.replaceVar(html, "css", this.settings['popups_css']);			html = tinyMCE.applyTemplate(html, args);			var win = window.open("", "mcePopup" + new Date().getTime(), "top=" + y + ",left=" + x + ",scrollbars=" + scrollbars + ",dialog=yes,minimizable=" + resizable + ",modal=yes,width=" + width + ",height=" + height + ",resizable=" + resizable);			if (win == null) {				alert(tinyMCELang['lang_popup_blocked']);				return;			}			win.document.write(html);			win.document.close();			win.resizeTo(width, height);			win.focus();		} else {			if ((tinyMCE.isMSIE && !tinyMCE.isOpera) && resizable != 'yes' && tinyMCE.settings["dialog_type"] == "modal") {				height += 10;				var features = "resizable:" + resizable 					+ ";scroll:"					+ scrollbars + ";status:yes;center:yes;help:no;dialogWidth:"					+ width + "px;dialogHeight:" + height + "px;";				window.showModalDialog(url, window, features);			} else {				var modal = (resizable == "yes") ? "no" : "yes";				if (tinyMCE.isGecko && tinyMCE.isMac)					modal = "no";				if (template['close_previous'] != "no")					try {tinyMCE.lastWindow.close();} catch (ex) {}				var win = window.open(url, "mcePopup" + new Date().getTime(), "top=" + y + ",left=" + x + ",scrollbars=" + scrollbars + ",dialog=" + modal + ",minimizable=" + resizable + ",modal=" + modal + ",width=" + width + ",height=" + height + ",resizable=" + resizable);				if (win == null) {					alert(tinyMCELang['lang_popup_blocked']);					return;				}				if (template['close_previous'] != "no")					tinyMCE.lastWindow = win;				eval('try { win.resizeTo(width, height); } catch(e) { }');				// Make it bigger if statusbar is forced				if (tinyMCE.isGecko) {					if (win.document.defaultView.statusbar.visible)						win.resizeBy(0, tinyMCE.isMac ? 10 : 24);				}				win.focus();			}		}	},	closeWindow : function(win) {		win.close();	},	getVisualAidClass : function(class_name, state) {		var aidClass = tinyMCE.settings['visual_table_class'];		if (typeof(state) == "undefined")			state = tinyMCE.settings['visual'];		// Split		var classNames = new Array();

⌨️ 快捷键说明

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