tiny_mce_src.js

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

JS
2,013
字号
		var ar = class_name.split(' ');		for (var i=0; i<ar.length; i++) {			if (ar[i] == aidClass)				ar[i] = "";			if (ar[i] != "")				classNames[classNames.length] = ar[i];		}		if (state)			classNames[classNames.length] = aidClass;		// Glue		var className = "";		for (var i=0; i<classNames.length; i++) {			if (i > 0)				className += " ";			className += classNames[i];		}		return className;	},	handleVisualAid : function(el, deep, state, inst) {		if (!el)			return;		var tableElement = null;		switch (el.nodeName) {			case "TABLE":				var oldW = el.style.width;				var oldH = el.style.height;				var bo = tinyMCE.getAttrib(el, "border");				bo = bo == "" || bo == "0" ? true : false;				tinyMCE.setAttrib(el, "class", tinyMCE.getVisualAidClass(tinyMCE.getAttrib(el, "class"), state && bo));				el.style.width = oldW;				el.style.height = oldH;				for (var y=0; y<el.rows.length; y++) {					for (var x=0; x<el.rows[y].cells.length; x++) {						var cn = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(el.rows[y].cells[x], "class"), state && bo);						tinyMCE.setAttrib(el.rows[y].cells[x], "class", cn);					}				}				break;			case "A":				var anchorName = tinyMCE.getAttrib(el, "name");				if (anchorName != '' && state) {					el.title = anchorName;					el.className = 'mceItemAnchor';				} else if (anchorName != '' && !state)					el.className = '';				break;		}		if (deep && el.hasChildNodes()) {			for (var i=0; i<el.childNodes.length; i++)				tinyMCE.handleVisualAid(el.childNodes[i], deep, state, inst);		}	},	/*	applyClassesToFonts : function(doc, size) {		var f = doc.getElementsByTagName("font");		for (var i=0; i<f.length; i++) {			var s = tinyMCE.getAttrib(f[i], "size");			if (s != "")				tinyMCE.setAttrib(f[i], 'class', "mceItemFont" + s);		}		if (typeof(size) != "undefined") {			var css = "";			for (var x=0; x<doc.styleSheets.length; x++) {				for (var i=0; i<doc.styleSheets[x].rules.length; i++) {					if (doc.styleSheets[x].rules[i].selectorText == '#mceSpanFonts .mceItemFont' + size) {						css = doc.styleSheets[x].rules[i].style.cssText;						break;					}				}				if (css != "")					break;			}			if (doc.styleSheets[0].rules[0].selectorText == "FONT")				doc.styleSheets[0].removeRule(0);			doc.styleSheets[0].addRule("FONT", css, 0);		}	},	*/	fixGeckoBaseHREFBug : function(m, e, h) {		var nl, i;		if (tinyMCE.isGecko) {			if (m == 1) {				h = h.replace(/\ssrc=/gi, " xsrc=");				h = h.replace(/\shref=/gi, " xhref=");				return h;			} else {				var el = new Array('a','img','select','area','iframe','base','input','script','embed','object','link');				for (var a=0; a<el.length; a++) {					var n = e.getElementsByTagName(el[a]);					for (i=0; i<n.length; i++) {						var xsrc = tinyMCE.getAttrib(n[i], "xsrc");						var xhref = tinyMCE.getAttrib(n[i], "xhref");						if (xsrc != "") {							n[i].src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], xsrc);							n[i].removeAttribute("xsrc");						}						if (xhref != "") {							n[i].href = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], xhref);							n[i].removeAttribute("xhref");						}					}				}			}		}		return h;	},	_setHTML : function(doc, html_content) {		// Force closed anchors open		//html_content = html_content.replace(new RegExp('<a(.*?)/>', 'gi'), '<a$1></a>');		html_content = tinyMCE.cleanupHTMLCode(html_content);		// Try innerHTML if it fails use pasteHTML in MSIE		try {			tinyMCE.setInnerHTML(doc.body, html_content);		} catch (e) {			if (this.isMSIE)				doc.body.createTextRange().pasteHTML(html_content);		}		// Content duplication bug fix		if (tinyMCE.isMSIE && tinyMCE.settings['fix_content_duplication']) {			// Remove P elements in P elements			var paras = doc.getElementsByTagName("P");			for (var i=0; i<paras.length; i++) {				var node = paras[i];				while ((node = node.parentNode) != null) {					if (node.nodeName == "P")						node.outerHTML = node.innerHTML;				}			}			// Content duplication bug fix (Seems to be word crap)			var html = doc.body.innerHTML;/*			if (html.indexOf('="mso') != -1) {				for (var i=0; i<doc.body.all.length; i++) {					var el = doc.body.all[i];					el.removeAttribute("className","",0);					el.removeAttribute("style","",0);				}				html = doc.body.innerHTML;				html = tinyMCE.regexpReplace(html, "<o:p><\/o:p>", "<br />");				html = tinyMCE.regexpReplace(html, "<o:p>&nbsp;<\/o:p>", "");				html = tinyMCE.regexpReplace(html, "<st1:.*?>", "");				html = tinyMCE.regexpReplace(html, "<p><\/p>", "");				html = tinyMCE.regexpReplace(html, "<p><\/p>\r\n<p><\/p>", "");				html = tinyMCE.regexpReplace(html, "<p>&nbsp;<\/p>", "<br />");				html = tinyMCE.regexpReplace(html, "<p>\s*(<p>\s*)?", "<p>");				html = tinyMCE.regexpReplace(html, "<\/p>\s*(<\/p>\s*)?", "</p>");			}*/			// Always set the htmlText output			tinyMCE.setInnerHTML(doc.body, html);		}		tinyMCE.cleanupAnchors(doc);		if (tinyMCE.getParam("convert_fonts_to_spans"))			tinyMCE.convertSpansToFonts(doc);	},	getEditorId : function(form_element) {		var inst = this.getInstanceById(form_element);		if (!inst)			return null;		return inst.editorId;	},	getInstanceById : function(editor_id) {		var inst = this.instances[editor_id];		if (!inst) {			for (var n in tinyMCE.instances) {				var instance = tinyMCE.instances[n];				if (!tinyMCE.isInstance(instance))					continue;				if (instance.formTargetElementId == editor_id) {					inst = instance;					break;				}			}		}		return inst;	},	queryInstanceCommandValue : function(editor_id, command) {		var inst = tinyMCE.getInstanceById(editor_id);		if (inst)			return inst.queryCommandValue(command);		return false;	},	queryInstanceCommandState : function(editor_id, command) {		var inst = tinyMCE.getInstanceById(editor_id);		if (inst)			return inst.queryCommandState(command);		return null;	},	setWindowArg : function(n, v) {		this.windowArgs[n] = v;	},	getWindowArg : function(n, d) {		return (typeof(this.windowArgs[n]) == "undefined") ? d : this.windowArgs[n];	},	getCSSClasses : function(editor_id, doc) {		var output = new Array();		// Is cached, use that		if (typeof(tinyMCE.cssClasses) != "undefined")			return tinyMCE.cssClasses;		if (typeof(editor_id) == "undefined" && typeof(doc) == "undefined") {			var instance;			for (var instanceName in tinyMCE.instances) {				instance = tinyMCE.instances[instanceName];				if (!tinyMCE.isInstance(instance))					continue;				break;			}			doc = instance.getDoc();		}		if (typeof(doc) == "undefined") {			var instance = tinyMCE.getInstanceById(editor_id);			doc = instance.getDoc();		}		if (doc) {			var styles = tinyMCE.isMSIE ? doc.styleSheets : doc.styleSheets;			if (styles && styles.length > 0) {				for (var x=0; x<styles.length; x++) {					var csses = null;					// Just ignore any errors					eval("try {var csses = tinyMCE.isMSIE ? doc.styleSheets(" + x + ").rules : doc.styleSheets[" + x + "].cssRules;} catch(e) {}");					if (!csses)						return new Array();					for (var i=0; i<csses.length; i++) {						var selectorText = csses[i].selectorText;						// Can be multiple rules per selector						if (selectorText) {							var rules = selectorText.split(',');							for (var c=0; c<rules.length; c++) {								// Invalid rule								if (rules[c].indexOf(' ') != -1 || rules[c].indexOf(':') != -1 || rules[c].indexOf('mceItem') != -1)									continue;								if (rules[c] == "." + tinyMCE.settings['visual_table_class'] || rules[c].indexOf('mceEditable') != -1 || rules[c].indexOf('mceNonEditable') != -1)									continue;								// Is class rule								if (rules[c].indexOf('.') != -1) {									//alert(rules[c].substring(rules[c].indexOf('.')));									output[output.length] = rules[c].substring(rules[c].indexOf('.')+1);								}							}						}					}				}			}		}		// Cache em		if (output.length > 0)			tinyMCE.cssClasses = output;		return output;	},	regexpReplace : function(in_str, reg_exp, replace_str, opts) {		if (in_str == null)			return in_str;		if (typeof(opts) == "undefined")			opts = 'g';		var re = new RegExp(reg_exp, opts);		return in_str.replace(re, replace_str);	},	trim : function(s) {		return s.replace(/^\s*|\s*$/g, "");	},	cleanupEventStr : function(s) {		s = "" + s;		s = s.replace('function anonymous()\n{\n', '');		s = s.replace('\n}', '');		s = s.replace(/^return true;/gi, ''); // Remove event blocker		return s;	},	getControlHTML : function(c) {		var i, l, n, o, v;		l = tinyMCE.plugins;		for (n in l) {			o = l[n];			if (o.getControlHTML && (v = o.getControlHTML(c)) != '')				return tinyMCE.replaceVar(v, "pluginurl", o.baseURL);		}		o = tinyMCE.themes[tinyMCE.settings['theme']];		if (o.getControlHTML && (v = o.getControlHTML(c)) != '')			return v;		return '';	},	evalFunc : function(f, idx, a) {		var s = '(', i;		for (i=idx; i<a.length; i++) {			s += 'a[' + i + ']';			if (i < a.length-1)				s += ',';		}		s += ');';		return eval("f" + s);	},	dispatchCallback : function(i, p, n) {		return this.callFunc(i, p, n, 0, this.dispatchCallback.arguments);	},	executeCallback : function(i, p, n) {		return this.callFunc(i, p, n, 1, this.executeCallback.arguments);	},	execCommandCallback : function(i, p, n) {		return this.callFunc(i, p, n, 2, this.execCommandCallback.arguments);	},	callFunc : function(ins, p, n, m, a) {		var l, i, on, o, s, v;		s = m == 2;		l = tinyMCE.getParam(p, '');		if (l != '' && (v = tinyMCE.evalFunc(typeof(l) == "function" ? l : window[l], 3, a)) == s && m > 0)			return true;		if (ins != null) {			for (i=0, l = ins.plugins; i<l.length; i++) {				o = tinyMCE.plugins[l[i]];				if (o[n] && (v = tinyMCE.evalFunc(o[n], 3, a)) == s && m > 0)			

⌨️ 快捷键说明

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