📄 overview-summary-tinymce_engine.class.js.html
字号:
case <span class="literal">"mceAddControl"</span>:
case <span class="literal">"mceAddEditor"</span>:
tinyMCE.addMCEControl(tinyMCE._getElementById(value), value);
<span class="reserved">return</span>;
case <span class="literal">"mceAddFrameControl"</span>:
tinyMCE.addMCEControl(tinyMCE._getElementById(value), value[<span class="literal">'element'</span>], value[<span class="literal">'document'</span>]);
<span class="reserved">return</span>;
case <span class="literal">"mceRemoveControl"</span>:
case <span class="literal">"mceRemoveEditor"</span>:
tinyMCE.removeMCEControl(value);
<span class="reserved">return</span>;
case <span class="literal">"mceResetDesignMode"</span>:
<span class="comment">// Resets the designmode state of the editors in Gecko</span>
<span class="reserved">if</span> (!tinyMCE.isMSIE) {
<span class="reserved">for</span> (var n in tinyMCE.instances) {
<span class="reserved">if</span> (!tinyMCE.isInstance(tinyMCE.instances[n]))
continue;
try {
tinyMCE.instances[n].getDoc().designMode = <span class="literal">"on"</span>;
} catch (e) {
<span class="comment">// Ignore any errors</span>
}
}
}
<span class="reserved">return</span>;
}
<span class="reserved">if</span> (<span class="reserved">this</span>.selectedInstance) {
<span class="reserved">this</span>.selectedInstance.execCommand(command, user_interface, value);
} <span class="reserved">else</span> <span class="reserved">if</span> (tinyMCE.settings[<span class="literal">'focus_alert'</span>])
alert(tinyMCELang[<span class="literal">'lang_focus_alert'</span>]);
},
<span class="comment">/**
* Creates a iframe editor container for the specified element.
*
* <span class="attrib">@param</span> {HTMLElement} replace_element Element to replace with iframe element.
* <span class="attrib">@private</span>
*/</span>
_createIFrame : <span class="reserved">function</span>(replace_element) {
var iframe = document.createElement(<span class="literal">"iframe"</span>);
var id = replace_element.getAttribute(<span class="literal">"id"</span>);
var aw, ah;
aw = <span class="literal">""</span> + tinyMCE.settings[<span class="literal">'area_width'</span>];
ah = <span class="literal">""</span> + tinyMCE.settings[<span class="literal">'area_height'</span>];
<span class="reserved">if</span> (aw.indexOf(<span class="literal">'%'</span>) == -1) {
aw = parseInt(aw);
aw = aw < 0 ? 300 : aw;
aw = aw + <span class="literal">"px"</span>;
}
<span class="reserved">if</span> (ah.indexOf(<span class="literal">'%'</span>) == -1) {
ah = parseInt(ah);
ah = ah < 0 ? 240 : ah;
ah = ah + <span class="literal">"px"</span>;
}
iframe.setAttribute(<span class="literal">"id"</span>, id);
<span class="comment">//iframe.setAttribute("className", "mceEditorArea");</span>
iframe.setAttribute(<span class="literal">"border"</span>, <span class="literal">"0"</span>);
iframe.setAttribute(<span class="literal">"frameBorder"</span>, <span class="literal">"0"</span>);
iframe.setAttribute(<span class="literal">"marginWidth"</span>, <span class="literal">"0"</span>);
iframe.setAttribute(<span class="literal">"marginHeight"</span>, <span class="literal">"0"</span>);
iframe.setAttribute(<span class="literal">"leftMargin"</span>, <span class="literal">"0"</span>);
iframe.setAttribute(<span class="literal">"topMargin"</span>, <span class="literal">"0"</span>);
iframe.setAttribute(<span class="literal">"width"</span>, aw);
iframe.setAttribute(<span class="literal">"height"</span>, ah);
iframe.setAttribute(<span class="literal">"allowtransparency"</span>, <span class="literal">"true"</span>);
<span class="reserved">if</span> (tinyMCE.settings[<span class="literal">"auto_resize"</span>])
iframe.setAttribute(<span class="literal">"scrolling"</span>, <span class="literal">"no"</span>);
<span class="comment">// Must have a src element in MSIE HTTPs breaks aswell as absoute URLs</span>
<span class="reserved">if</span> (tinyMCE.isMSIE && !tinyMCE.isOpera)
iframe.setAttribute(<span class="literal">"src"</span>, <span class="reserved">this</span>.settings[<span class="literal">'default_document'</span>]);
iframe.style.width = aw;
iframe.style.height = ah;
<span class="comment">// MSIE 5.0 issue</span>
<span class="reserved">if</span> (tinyMCE.isMSIE && !tinyMCE.isOpera)
replace_element.outerHTML = iframe.outerHTML;
<span class="reserved">else</span>
replace_element.parentNode.replaceChild(iframe, replace_element);
<span class="reserved">if</span> (tinyMCE.isMSIE)
<span class="reserved">return</span> window.frames[id];
<span class="reserved">else</span>
<span class="reserved">return</span> iframe;
},
<span class="comment">/**
* Setups the contents of TinyMCE editor instance and fills it with contents.
*
* <span class="attrib">@param</span> {string} editor_id TinyMCE editor instance control id to fill.
*/</span>
setupContent : <span class="reserved">function</span>(editor_id) {
var inst = tinyMCE.instances[editor_id];
var doc = inst.getDoc();
var head = doc.getElementsByTagName(<span class="literal">'head'</span>).item(0);
var content = inst.startContent;
inst.switchSettings();
<span class="comment">// Not loaded correctly hit it again, Mozilla bug #997860</span>
<span class="reserved">if</span> (!tinyMCE.isMSIE && tinyMCE.getParam(<span class="literal">"setupcontent_reload"</span>, false) && doc.title != <span class="literal">"blank_page"</span>) {
<span class="comment">// This part will remove the designMode status</span>
<span class="comment">// Failes first time in Firefox 1.5b2 on Mac</span>
try {doc.location.href = tinyMCE.baseURL + <span class="literal">"/blank.htm"</span>;} catch (ex) {}
window.setTimeout(<span class="literal">"tinyMCE.setupContent('"</span> + editor_id + <span class="literal">"');"</span>, 1000);
<span class="reserved">return</span>;
}
<span class="reserved">if</span> (!head) {
window.setTimeout(<span class="literal">"tinyMCE.setupContent('"</span> + editor_id + <span class="literal">"');"</span>, 10);
<span class="reserved">return</span>;
}
<span class="comment">// Import theme specific content CSS the user specific</span>
tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + <span class="literal">"/themes/"</span> + inst.settings[<span class="literal">'theme'</span>] + <span class="literal">"/css/editor_content.css"</span>);
tinyMCE.importCSS(inst.getDoc(), inst.settings[<span class="literal">'content_css'</span>]);
tinyMCE.dispatchCallback(inst, <span class="literal">'init_instance_callback'</span>, <span class="literal">'initInstance'</span>, inst);
<span class="comment">// Setup keyboard shortcuts</span>
<span class="reserved">if</span> (tinyMCE.getParam(<span class="literal">'custom_undo_redo_keyboard_shortcuts'</span>)) {
inst.addShortcut(<span class="literal">'ctrl'</span>, <span class="literal">'z'</span>, <span class="literal">'lang_undo_desc'</span>, <span class="literal">'Undo'</span>);
inst.addShortcut(<span class="literal">'ctrl'</span>, <span class="literal">'y'</span>, <span class="literal">'lang_redo_desc'</span>, <span class="literal">'Redo'</span>);
}
<span class="comment">// Add default shortcuts for gecko</span>
<span class="reserved">if</span> (tinyMCE.isGecko) {
inst.addShortcut(<span class="literal">'ctrl'</span>, <span class="literal">'b'</span>, <span class="literal">'lang_bold_desc'</span>, <span class="literal">'Bold'</span>);
inst.addShortcut(<span class="literal">'ctrl'</span>, <span class="literal">'i'</span>, <span class="literal">'lang_italic_desc'</span>, <span class="literal">'Italic'</span>);
inst.addShortcut(<span class="literal">'ctrl'</span>, <span class="literal">'u'</span>, <span class="literal">'lang_underline_desc'</span>, <span class="literal">'Underline'</span>);
}
<span class="comment">// Setup span styles</span>
<span class="reserved">if</span> (tinyMCE.getParam(<span class="literal">"convert_fonts_to_spans"</span>))
inst.getDoc().body.setAttribute(<span class="literal">'id'</span>, <span class="literal">'mceSpanFonts'</span>);
<span class="reserved">if</span> (tinyMCE.settings[<span class="literal">'nowrap'</span>])
doc.body.style.whiteSpace = <span class="literal">"nowrap"</span>;
doc.body.dir = <span class="reserved">this</span>.settings[<span class="literal">'directionality'</span>];
doc.editorId = editor_id;
<span class="comment">// Add on document element in Mozilla</span>
<span class="reserved">if</span> (!tinyMCE.isMSIE)
doc.documentElement.editorId = editor_id;
inst.setBaseHREF(tinyMCE.settings[<span class="literal">'base_href'</span>]);
<span class="comment">// Replace new line characters to BRs</span>
<span class="reserved">if</span> (tinyMCE.settings[<span class="literal">'convert_newlines_to_brs'</span>]) {
content = tinyMCE.regexpReplace(content, <span class="literal">"\r\n"</span>, <span class="literal">"<br />"</span>, <span class="literal">"gi"</span>);
content = tinyMCE.regexpReplace(content, <span class="literal">"\r"</span>, <span class="literal">"<br />"</span>, <span class="literal">"gi"</span>);
content = tinyMCE.regexpReplace(content, <span class="literal">"\n"</span>, <span class="literal">"<br />"</span>, <span class="literal">"gi"</span>);
}
<span class="comment">// Open closed anchors</span>
<span class="comment">// content = content.replace(new RegExp('<a(.*?)/>', 'gi'), '<a$1></a>');</span>
<span class="comment">// Call custom cleanup code</span>
content = tinyMCE.storeAwayURLs(content);
content = tinyMCE._customCleanup(inst, <span class="literal">"insert_to_editor"</span>, content);
<span class="reserved">if</span> (tinyMCE.isMSIE) {
<span class="comment">// Ugly!!!</span>
window.setInterval(<span class="literal">'try{tinyMCE.getCSSClasses(document.frames["'</span> + editor_id + <span class="literal">'"].document, "'</span> + editor_id + <span class="literal">'");}catch(e){}'</span>, 500);
<span class="reserved">if</span> (tinyMCE.settings[<span class="literal">"force_br_newlines"</span>])
document.frames[editor_id].document.styleSheets[0].addRule(<span class="literal">"p"</span>, <span class="literal">"margin: 0;"</span>);
var body = document.frames[editor_id].document.body;
body.editorId = editor_id;
}
content = tinyMCE.cleanupHTMLCode(content);
<span class="comment">// Fix for bug #958637</span>
<span class="reserved">if</span> (!tinyMCE.isMSIE) {
var contentElement = inst.getDoc().createElement(<span class="literal">"body"</span>);
var doc = inst.getDoc();
contentElement.innerHTML = content;
<span class="comment">// Remove weridness!</span>
<span class="reserved">if</span> (tinyMCE.isGecko && tinyMCE.settings[<span class="literal">'remove_lt_gt'</span>])
content = content.replace(new RegExp(<span class="literal">'&lt;&gt;'</span>, <span class="literal">'g'</span>), <span class="literal">""</span>);
<span class="reserved">if</span> (tinyMCE.settings[<span class="literal">'cleanup_on_startup'</span>])
tinyMCE.setInnerHTML(inst.getBody(), tinyMCE._cleanupHTML(inst, doc, <span class="reserved">this</span>.settings, contentElement));
<span class="reserved">else</span> {
<span class="comment">// Convert all strong/em to b/i</span>
content = tinyMCE.regexpReplace(content, <span class="literal">"<strong"</span>, <span class="literal">"<b"</span>, <span class="literal">"gi"</span>);
content = tinyMCE.regexpReplace(content, <span class="literal">"<em(/?)>"</span>, <span class="literal">"<i$1>"</span>, <span class="literal">"gi"</span>);
content = tinyMCE.regexpReplace(content, <span class="li
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -