📄 tiny_mce_src.js
字号:
/* file:jscripts/tiny_mce/classes/TinyMCE_Engine.class.js */function TinyMCE_Engine() { var ua; this.majorVersion = "2"; this.minorVersion = "1.2"; this.releaseDate = "2007-08-21"; this.instances = []; this.switchClassCache = []; this.windowArgs = []; this.loadedFiles = []; this.pendingFiles = []; this.loadingIndex = 0; this.configs = []; this.currentConfig = 0; this.eventHandlers = []; this.log = []; this.undoLevels = []; this.undoIndex = 0; this.typingUndoIndex = -1; this.settings = []; // Browser check ua = navigator.userAgent; this.isMSIE = (navigator.appName == "Microsoft Internet Explorer"); this.isMSIE5 = this.isMSIE && (ua.indexOf('MSIE 5') != -1); this.isMSIE5_0 = this.isMSIE && (ua.indexOf('MSIE 5.0') != -1); this.isMSIE7 = this.isMSIE && (ua.indexOf('MSIE 7') != -1); this.isGecko = ua.indexOf('Gecko') != -1; // Will also be true on Safari this.isSafari = ua.indexOf('Safari') != -1; this.isOpera = window['opera'] && opera.buildNumber ? true : false; this.isMac = ua.indexOf('Mac') != -1; this.isNS7 = ua.indexOf('Netscape/7') != -1; this.isNS71 = ua.indexOf('Netscape/7.1') != -1; this.dialogCounter = 0; this.plugins = []; this.themes = []; this.menus = []; this.loadedPlugins = []; this.buttonMap = []; this.isLoaded = false; // Fake MSIE on Opera and if Opera fakes IE, Gecko or Safari cancel those if (this.isOpera) { this.isMSIE = true; this.isGecko = false; this.isSafari = false; } this.isIE = this.isMSIE; this.isRealIE = this.isMSIE && !this.isOpera; // TinyMCE editor id instance counter this.idCounter = 0;};TinyMCE_Engine.prototype = { init : function(settings) { var theme, nl, baseHREF = "", i, cssPath, entities, h, p, src, elements = [], head; // IE 5.0x is no longer supported since 5.5, 6.0 and 7.0 now exists. We can't support old browsers forever, sorry. if (this.isMSIE5_0) return; this.settings = settings; // Check if valid browser has execcommand support if (typeof(document.execCommand) == 'undefined') return; // Get script base path if (!tinyMCE.baseURL) { // Search through head head = document.getElementsByTagName('head')[0]; if (head) { for (i=0, nl = head.getElementsByTagName('script'); i<nl.length; i++) elements.push(nl[i]); } // Search through rest of document for (i=0, nl = document.getElementsByTagName('script'); i<nl.length; i++) elements.push(nl[i]); // If base element found, add that infront of baseURL nl = document.getElementsByTagName('base'); for (i=0; i<nl.length; i++) { if (nl[i].href) baseHREF = nl[i].href; } for (i=0; i<elements.length; i++) { if (elements[i].src && (elements[i].src.indexOf("tiny_mce.js") != -1 || elements[i].src.indexOf("tiny_mce_dev.js") != -1 || elements[i].src.indexOf("tiny_mce_src.js") != -1 || elements[i].src.indexOf("tiny_mce_gzip") != -1)) { src = elements[i].src; tinyMCE.srcMode = (src.indexOf('_src') != -1 || src.indexOf('_dev') != -1) ? '_src' : ''; tinyMCE.gzipMode = src.indexOf('_gzip') != -1; src = src.substring(0, src.lastIndexOf('/')); if (settings.exec_mode == "src" || settings.exec_mode == "normal") tinyMCE.srcMode = settings.exec_mode == "src" ? '_src' : ''; // Force it absolute if page has a base href if (baseHREF !== '' && src.indexOf('://') == -1) tinyMCE.baseURL = baseHREF + src; else tinyMCE.baseURL = src; break; } } } // Get document base path this.documentBasePath = document.location.href; if (this.documentBasePath.indexOf('?') != -1) this.documentBasePath = this.documentBasePath.substring(0, this.documentBasePath.indexOf('?')); this.documentURL = this.documentBasePath; this.documentBasePath = this.documentBasePath.substring(0, this.documentBasePath.lastIndexOf('/')); // If not HTTP absolute if (tinyMCE.baseURL.indexOf('://') == -1 && tinyMCE.baseURL.charAt(0) != '/') { // If site absolute tinyMCE.baseURL = this.documentBasePath + "/" + tinyMCE.baseURL; } // Set default values on settings this._def("mode", "none"); this._def("theme", "advanced"); this._def("plugins", "", true); this._def("language", "en"); this._def("docs_language", this.settings.language); this._def("elements", ""); this._def("textarea_trigger", "mce_editable"); this._def("editor_selector", ""); this._def("editor_deselector", "mceNoEditor"); this._def("valid_elements", "+a[id|style|rel|rev|charset|hreflang|dir|lang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],-strong/-b[class|style],-em/-i[class|style],-strike[class|style],-u[class|style],#p[id|style|dir|class|align],-ol[class|style],-ul[class|style],-li[class|style],br,img[id|dir|lang|longdesc|usemap|style|class|src|onmouseover|onmouseout|border|alt=|title|hspace|vspace|width|height|align],-sub[style|class],-sup[style|class],-blockquote[dir|style],-table[border=0|cellspacing|cellpadding|width|height|class|align|summary|style|dir|id|lang|bgcolor|background|bordercolor],-tr[id|lang|dir|class|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor],tbody[id|class],thead[id|class],tfoot[id|class],#td[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor|scope],-th[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|scope],caption[id|lang|dir|class|style],-div[id|dir|class|align|style],-span[style|class|align],-pre[class|align|style],address[class|align|style],-h1[id|style|dir|class|align],-h2[id|style|dir|class|align],-h3[id|style|dir|class|align],-h4[id|style|dir|class|align],-h5[id|style|dir|class|align],-h6[id|style|dir|class|align],hr[class|style],-font[face|size|style|id|class|dir|color],dd[id|class|title|style|dir|lang],dl[id|class|title|style|dir|lang],dt[id|class|title|style|dir|lang],cite[title|id|class|style|dir|lang],abbr[title|id|class|style|dir|lang],acronym[title|id|class|style|dir|lang],del[title|id|class|style|dir|lang|datetime|cite],ins[title|id|class|style|dir|lang|datetime|cite]"); this._def("extended_valid_elements", ""); this._def("invalid_elements", ""); this._def("encoding", ""); this._def("urlconverter_callback", tinyMCE.getParam("urlconvertor_callback", "TinyMCE_Engine.prototype.convertURL")); this._def("save_callback", ""); this._def("force_br_newlines", false); this._def("force_p_newlines", true); this._def("add_form_submit_trigger", true); this._def("relative_urls", true); this._def("remove_script_host", true); this._def("focus_alert", true); this._def("document_base_url", this.documentURL); this._def("visual", true); this._def("visual_table_class", "mceVisualAid"); this._def("setupcontent_callback", ""); this._def("fix_content_duplication", true); this._def("custom_undo_redo", true); this._def("custom_undo_redo_levels", -1); this._def("custom_undo_redo_keyboard_shortcuts", true); this._def("custom_undo_redo_restore_selection", true); this._def("custom_undo_redo_global", false); this._def("verify_html", true); this._def("apply_source_formatting", false); this._def("directionality", "ltr"); this._def("cleanup_on_startup", false); this._def("inline_styles", false); this._def("convert_newlines_to_brs", false); this._def("auto_reset_designmode", true); this._def("entities", "39,#39,160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,34,quot,38,amp,60,lt,62,gt,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro", true); this._def("entity_encoding", "named"); this._def("cleanup_callback", ""); this._def("add_unload_trigger", true); this._def("ask", false); this._def("nowrap", false); this._def("auto_resize", false); this._def("auto_focus", false); this._def("cleanup", true); this._def("remove_linebreaks", true); this._def("button_tile_map", false); this._def("submit_patch", true); this._def("browsers", "msie,safari,gecko,opera", true); this._def("dialog_type", "window"); this._def("accessibility_warnings", true); this._def("accessibility_focus", true); this._def("merge_styles_invalid_parents", ""); this._def("force_hex_style_colors", true); this._def("trim_span_elements", true); this._def("convert_fonts_to_spans", false); this._def("doctype", '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">'); this._def("font_size_classes", ''); this._def("font_size_style_values", 'xx-small,x-small,small,medium,large,x-large,xx-large', true); this._def("event_elements", 'a,img', true); this._def("convert_urls", true); this._def("table_inline_editing", false); this._def("object_resizing", true); this._def("custom_shortcuts", true); this._def("convert_on_click", false); this._def("content_css", ''); this._def("fix_list_elements", true); this._def("fix_table_elements", false); this._def("strict_loading_mode", document.contentType == 'application/xhtml+xml'); this._def("hidden_tab_class", ''); this._def("display_tab_class", ''); this._def("gecko_spellcheck", false); this._def("hide_selects_on_submit", true); this._def("forced_root_block", false); this._def("remove_trailing_nbsp", false); this._def("save_on_tinymce_forms", false); // Force strict loading mode to false on non Gecko browsers if (this.isMSIE && !this.isOpera) this.settings.strict_loading_mode = false; // Browser check IE if (this.isMSIE && this.settings.browsers.indexOf('msie') == -1) return; // Browser check Gecko if (this.isGecko && this.settings.browsers.indexOf('gecko') == -1) return; // Browser check Safari if (this.isSafari && this.settings.browsers.indexOf('safari') == -1) return; // Browser check Opera if (this.isOpera && this.settings.browsers.indexOf('opera') == -1) return; // If not super absolute make it so baseHREF = tinyMCE.settings.document_base_url; h = document.location.href; p = h.indexOf('://'); if (p > 0 && document.location.protocol != "file:") { p = h.indexOf('/', p + 3); h = h.substring(0, p); if (baseHREF.indexOf('://') == -1) baseHREF = h + baseHREF; tinyMCE.settings.document_base_url = baseHREF; tinyMCE.settings.document_base_prefix = h; } // Trim away query part if (baseHREF.indexOf('?') != -1) baseHREF = baseHREF.substring(0, baseHREF.indexOf('?')); this.settings.base_href = baseHREF.substring(0, baseHREF.lastIndexOf('/')) + "/"; theme = this.settings.theme; this.inlineStrict = 'A|BR|SPAN|BDO|MAP|OBJECT|IMG|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|#text|#comment'; this.inlineTransitional = 'A|BR|SPAN|BDO|OBJECT|APPLET|IMG|MAP|IFRAME|TT|I|B|U|S|STRIKE|BIG|SMALL|FONT|BASEFONT|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|#text|#comment'; this.blockElms = 'H[1-6]|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP'; this.blockRegExp = new RegExp("^(" + this.blockElms + ")$", "i"); this.posKeyCodes = [13,45,36,35,33,34,37,38,39,40]; this.uniqueURL = 'javascript:void(091039730);'; // Make unique URL non real URL this.uniqueTag = '<div id="mceTMPElement" style="display: none">TMP</div>'; this.callbacks = ['onInit', 'getInfo', 'getEditorTemplate', 'setupContent', 'onChange', 'onPageLoad', 'handleNodeChange', 'initInstance', 'execCommand', 'getControlHTML', 'handleEvent', 'cleanup', 'removeInstance']; // Theme url this.settings.theme_href = tinyMCE.baseURL + "/themes/" + theme; if (!tinyMCE.isIE || tinyMCE.isOpera) this.settings.force_br_newlines = false; if (tinyMCE.getParam("popups_css", false)) { cssPath = tinyMCE.getParam("popups_css", ""); // Is relative if (cssPath.indexOf('://') == -1 && cssPath.charAt(0) != '/') this.settings.popups_css = this.documentBasePath + "/" + cssPath; else this.settings.popups_css = cssPath; } else this.settings.popups_css = tinyMCE.baseURL + "/themes/" + theme + "/css/editor_popup.css"; if (tinyMCE.getParam("editor_css", false)) { cssPath = tinyMCE.getParam("editor_css", ""); // Is relative if (cssPath.indexOf('://') == -1 && cssPath.charAt(0) != '/') this.settings.editor_css = this.documentBasePath + "/" + cssPath; else this.settings.editor_css = cssPath; } else { if (this.settings.editor_css !== '') this.settings.editor_css = tinyMCE.baseURL + "/themes/" + theme + "/css/editor_ui.css"; } // Only do this once if (this.configs.length == 0) { if (typeof(TinyMCECompressed) == "undefined") { tinyMCE.addEvent(window, "DOMContentLoaded", TinyMCE_Engine.prototype.onLoad); if (tinyMCE.isRealIE) { if (document.body) tinyMCE.addEvent(document.body, "readystatechange", TinyMCE_Engine.prototype.onLoad); else tinyMCE.addEvent(document, "readystatechange", TinyMCE_Engine.prototype.onLoad); } tinyMCE.addEvent(window, "load", TinyMCE_Engine.prototype.onLoad); tinyMCE._addUnloadEvents(); } } this.loadScript(tinyMCE.baseURL + '/themes/' + this.settings.theme + '/editor_template' + tinyMCE.srcMode + '.js'); this.loadScript(tinyMCE.baseURL + '/langs/' + this.settings.language + '.js'); this.loadCSS(this.settings.editor_css); // Add plugins p = tinyMCE.getParam('plugins', '', true, ','); if (p.length > 0) { for (i=0; i<p.length; i++) { if (p[i].charAt(0) != '-') this.loadScript(tinyMCE.baseURL + '/plugins/' + p[i] + '/editor_plugin' + tinyMCE.srcMode + '.js'); } } // Setup entities if (tinyMCE.getParam('entity_encoding') == 'named') { settings.cleanup_entities = []; entities = tinyMCE.getParam('entities', '', true, ','); for (i=0; i<entities.length; i+=2) settings.cleanup_entities['c' + entities[i]] = entities[i+1]; } // Save away this config settings.index = this.configs.length; this.configs[this.configs.length] = settings; // Start loading first one in chain this.loadNextScript(); // Force flicker free CSS backgrounds in IE if (this.isIE && !this.isOpera) { try { document.execCommand('BackgroundImageCache', false, true); } catch (e) { // Ignore } } // Setup XML encoding regexps this.xmlEncodeRe = new RegExp('[<>&"]', 'g'); }, _addUnloadEvents : function() { var st = tinyMCE.settings.add_unload_trigger; if (tinyMCE.isIE) { if (st) { tinyMCE.addEvent(window, "unload", TinyMCE_Engine.prototype.unloadHandler); tinyMCE.addEvent(window.document, "beforeunload", TinyMCE_Engine.prototype.unloadHandler); } } else { if (st) tinyMCE.addEvent(window, "unload", function () {tinyMCE.triggerSave(true, true);}); } }, _def : function(key, def_val, t) { var v = tinyMCE.getParam(key, def_val); v = t ? v.replace(/\s+/g, "") : v; this.settings[key] = v; }, hasPlugin : function(n) { return typeof(this.plugins[n]) != "undefined" && this.plugins[n] != null; }, addPlugin : function(n, p) { var op = this.plugins[n]; // Use the previous plugin object base URL used when loading external plugins p.baseURL = op ? op.baseURL : tinyMCE.baseURL + "/plugins/" + n; this.plugins[n] = p; this.loadNextScript(); }, setPluginBaseURL : function(n, u) { var op = this.plugins[n]; if (op) op.baseURL = u; else this.plugins[n] = {baseURL : u}; }, loadPlugin : function(n, u) { u = u.indexOf('.js') != -1 ? u.substring(0, u.lastIndexOf('/')) : u;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -