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> <\/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> <\/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 + -
显示快捷键?