📄 tiny_mce_src.js
字号:
case "reset": var formObj = tinyMCE.isIE ? window.event.srcElement : e.target; for (i=0; i<document.forms.length; i++) { if (document.forms[i] == formObj) window.setTimeout('tinyMCE.resetForm(' + i + ');', 10); } return; case "keypress": if (inst && inst.handleShortcut(e)) return false; if (e.target.editorId) { tinyMCE.instances[e.target.editorId].select(); } else { if (e.target.ownerDocument.editorId) tinyMCE.instances[e.target.ownerDocument.editorId].select(); } if (tinyMCE.selectedInstance) tinyMCE.selectedInstance.switchSettings(); // Insert P element if ((tinyMCE.isGecko || tinyMCE.isOpera || tinyMCE.isSafari) && tinyMCE.settings.force_p_newlines && e.keyCode == 13 && !e.shiftKey) { // Insert P element instead of BR if (TinyMCE_ForceParagraphs._insertPara(tinyMCE.selectedInstance, e)) { // Cancel event tinyMCE.execCommand("mceAddUndoLevel"); return tinyMCE.cancelEvent(e); } } // Handle backspace if ((tinyMCE.isGecko && !tinyMCE.isSafari) && tinyMCE.settings.force_p_newlines && (e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey) { // Insert P element instead of BR if (TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance, e.type)) { // Cancel event tinyMCE.execCommand("mceAddUndoLevel"); return tinyMCE.cancelEvent(e); } } // Return key pressed if (tinyMCE.isIE && tinyMCE.settings.force_br_newlines && e.keyCode == 13) { if (e.target.editorId) tinyMCE.instances[e.target.editorId].select(); if (tinyMCE.selectedInstance) { var sel = tinyMCE.selectedInstance.getDoc().selection; var rng = sel.createRange(); if (tinyMCE.getParentElement(rng.parentElement(), "li") != null) return false; // Cancel event e.returnValue = false; e.cancelBubble = true; // Insert BR element rng.pasteHTML("<br />"); rng.collapse(false); rng.select(); tinyMCE.execCommand("mceAddUndoLevel"); tinyMCE.triggerNodeChange(false); return false; } } // Backspace or delete if (e.keyCode == 8 || e.keyCode == 46) { tinyMCE.selectedElement = e.target; tinyMCE.linkElement = tinyMCE.getParentElement(e.target, "a"); tinyMCE.imgElement = tinyMCE.getParentElement(e.target, "img"); tinyMCE.triggerNodeChange(false); } return false; case "keyup": case "keydown": tinyMCE.hideMenus(); tinyMCE.hasMouseMoved = false; if (inst && inst.handleShortcut(e)) return false; inst._fixRootBlocks(); if (inst.settings.remove_trailing_nbsp) inst._fixTrailingNbsp(); if (e.target.editorId) tinyMCE.instances[e.target.editorId].select(); if (tinyMCE.selectedInstance) tinyMCE.selectedInstance.switchSettings(); inst = tinyMCE.selectedInstance; // Handle backspace if (tinyMCE.isGecko && tinyMCE.settings.force_p_newlines && (e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey) { // Insert P element instead of BR if (TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance, e.type)) { // Cancel event tinyMCE.execCommand("mceAddUndoLevel"); e.preventDefault(); return false; } } tinyMCE.selectedElement = null; tinyMCE.selectedNode = null; elm = tinyMCE.selectedInstance.getFocusElement(); tinyMCE.linkElement = tinyMCE.getParentElement(elm, "a"); tinyMCE.imgElement = tinyMCE.getParentElement(elm, "img"); tinyMCE.selectedElement = elm; // Update visualaids on tabs if (tinyMCE.isGecko && e.type == "keyup" && e.keyCode == 9) tinyMCE.handleVisualAid(tinyMCE.selectedInstance.getBody(), true, tinyMCE.settings.visual, tinyMCE.selectedInstance); // Fix empty elements on return/enter, check where enter occured if (tinyMCE.isIE && e.type == "keydown" && e.keyCode == 13) tinyMCE.enterKeyElement = tinyMCE.selectedInstance.getFocusElement(); // Fix empty elements on return/enter if (tinyMCE.isIE && e.type == "keyup" && e.keyCode == 13) { elm = tinyMCE.enterKeyElement; if (elm) { var re = new RegExp('^HR|IMG|BR$','g'); // Skip these var dre = new RegExp('^H[1-6]$','g'); // Add double on these if (!elm.hasChildNodes() && !re.test(elm.nodeName)) { if (dre.test(elm.nodeName)) elm.innerHTML = " "; else elm.innerHTML = " "; } } } // Check if it's a position key keys = tinyMCE.posKeyCodes; var posKey = false; for (i=0; i<keys.length; i++) { if (keys[i] == e.keyCode) { posKey = true; break; } } // MSIE custom key handling if (tinyMCE.isIE && tinyMCE.settings.custom_undo_redo) { keys = [8, 46]; // Backspace,Delete for (i=0; i<keys.length; i++) { if (keys[i] == e.keyCode) { if (e.type == "keyup") tinyMCE.triggerNodeChange(false); } } } // If Ctrl key if (e.keyCode == 17) return true; // Handle Undo/Redo when typing content if (tinyMCE.isGecko) { // Start typing (not a position key or ctrl key, but ctrl+x and ctrl+p is ok) if (!posKey && e.type == "keyup" && !e.ctrlKey || (e.ctrlKey && (e.keyCode == 86 || e.keyCode == 88))) tinyMCE.execCommand("mceStartTyping"); } else { // IE seems to be working better with this setting if (!posKey && e.type == "keyup") tinyMCE.execCommand("mceStartTyping"); } // Store undo bookmark if (e.type == "keydown" && (posKey || e.ctrlKey) && inst) inst.undoBookmark = inst.selection.getBookmark(); // End typing (position key) or some Ctrl event if (e.type == "keyup" && (posKey || e.ctrlKey)) tinyMCE.execCommand("mceEndTyping"); if (posKey && e.type == "keyup") tinyMCE.triggerNodeChange(false); if (tinyMCE.isIE && e.ctrlKey) window.setTimeout('tinyMCE.triggerNodeChange(false);', 1); break; case "mousedown": case "mouseup": case "click": case "dblclick": case "focus": tinyMCE.hideMenus(); if (tinyMCE.selectedInstance) { tinyMCE.selectedInstance.switchSettings(); tinyMCE.selectedInstance.isFocused = true; } // Check instance event trigged on var targetBody = tinyMCE.getParentElement(e.target, "html"); for (var instanceName in tinyMCE.instances) { if (!tinyMCE.isInstance(tinyMCE.instances[instanceName])) continue; inst = tinyMCE.instances[instanceName]; // Reset design mode if lost (on everything just in case) inst.autoResetDesignMode(); // Use HTML element since users might click outside of body element if (inst.getBody().parentNode == targetBody) { inst.select(); tinyMCE.selectedElement = e.target; tinyMCE.linkElement = tinyMCE.getParentElement(tinyMCE.selectedElement, "a"); tinyMCE.imgElement = tinyMCE.getParentElement(tinyMCE.selectedElement, "img"); break; } } // Add first bookmark location if (!tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark && (e.type == "mouseup" || e.type == "dblclick")) tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark = tinyMCE.selectedInstance.selection.getBookmark(); // Reset selected node if (e.type != "focus") tinyMCE.selectedNode = null; tinyMCE.triggerNodeChange(false); tinyMCE.execCommand("mceEndTyping"); if (e.type == "mouseup") tinyMCE.execCommand("mceAddUndoLevel"); // Just in case if (!tinyMCE.selectedInstance && e.target.editorId) tinyMCE.instances[e.target.editorId].select(); return false; } }, getButtonHTML : function(id, lang, img, cmd, ui, val) { var h = '', m, x, io = ''; cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + cmd + '\''; if (typeof(ui) != "undefined" && ui != null) cmd += ',' + ui; if (typeof(val) != "undefined" && val != null) cmd += ",'" + val + "'"; cmd += ');'; // Patch for IE7 bug with hover out not restoring correctly if (tinyMCE.isRealIE) io = 'onmouseover="tinyMCE.lastHover = this;"'; // Use tilemaps when enabled and found and never in MSIE since it loads the tile each time from cache if cahce is disabled if (tinyMCE.getParam('button_tile_map') && (!tinyMCE.isIE || tinyMCE.isOpera) && (m = this.buttonMap[id]) != null && (tinyMCE.getParam("language") == "en" || img.indexOf('$lang') == -1)) { // Tiled button x = 0 - (m * 20) == 0 ? '0' : 0 - (m * 20); h += '<a id="{$editor_id}_' + id + '" href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" ' + io + ' class="mceTiledButton mceButtonNormal" target="_self">'; h += '<img src="{$themeurl}/images/spacer.gif" style="background-position: ' + x + 'px 0" alt="{$'+lang+'}" title="{$' + lang + '}" />'; h += '</a>'; } else { // Normal button h += '<a id="{$editor_id}_' + id + '" href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" ' + io + ' class="mceButtonNormal" target="_self">'; h += '<img src="' + img + '" alt="{$'+lang+'}" title="{$' + lang + '}" />'; h += '</a>'; } return h; }, getMenuButtonHTML : function(id, lang, img, mcmd, cmd, ui, val) { var h = '', m, x; mcmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + mcmd + '\');'; cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + cmd + '\''; if (typeof(ui) != "undefined" && ui != null) cmd += ',' + ui; if (typeof(val) != "undefined" && val != null) cmd += ",'" + val + "'"; cmd += ');'; // Use tilemaps when enabled and found and never in MSIE since it loads the tile each time from cache if cahce is disabled if (tinyMCE.getParam('button_tile_map') && (!tinyMCE.isIE || tinyMCE.isOpera) && (m = tinyMCE.buttonMap[id]) != null && (tinyMCE.getParam("language") == "en" || img.indexOf('$lang') == -1)) { x = 0 - (m * 20) == 0 ? '0' : 0 - (m * 20); if (tinyMCE.isRealIE) h += '<span id="{$editor_id}_' + id + '" class="mceMenuButton" onmouseover="tinyMCE._menuButtonEvent(\'over\',this);tinyMCE.lastHover = this;" onmouseout="tinyMCE._menuButtonEvent(\'out\',this);">'; else h += '<span id="{$editor_id}_' + id + '" class="mceMenuButton">'; h += '<a href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" class="mceTiledButton mceMenuButtonNormal" target="_self">'; h += '<img src="{$themeurl}/images/spacer.gif" style="width: 20px; height: 20px; background-position: ' + x + 'px 0" title="{$' + lang + '}" /></a>'; h += '<a href="javascript:' + mcmd + '" onclick="' + mcmd + 'return false;" onmousedown="return false;"><img src="{$themeurl}/images/button_menu.gif" title="{$' + lang + '}" class="mceMenuButton" />'; h += '</a></span>'; } else { if (tinyMCE.isRealIE) h += '<span id="{$editor_id}_' + id + '" dir="ltr" class="mceMenuButton" onmouseover="tinyMCE._menuButtonEvent(\'over\',this);tinyMCE.lastHover = this;" onmouseout="tinyMCE._menuButtonEvent(\'out\',this);">'; else h += '<span id="{$editor_id}_' + id + '" dir="ltr" class="mceMenuButton">'; h += '<a href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" class="mceMenuButtonNormal" target="_self">'; h += '<img src="' + img + '" title="{$' + lang + '}" /></a>'; h += '<a href="javascript:' + mcmd + '" onclick="' + mcmd + 'return false;" onmousedown="return false;"><img src="{$themeurl}/images/button_menu.gif" title="{$' + lang + '}" class="mceMenuButton" />'; h += '</a></span>'; } return h; }, _menuButtonEvent : function(e, o) { if (o.className == 'mceMenuButtonFocus') return; if (e == 'over') o.className = o.className + ' mceMenuHover'; else o.className = o.className.replace(/\s.*$/, ''); }, addButtonMap : function(m) { var i, a = m.replace(/\s+/, '').split(','); for (i=0; i<a.length; i++) this.buttonMap[a[i]] = i; }, formSubmit : function(f, p) { var n, inst, found = false; if (f.form) f = f.form; // Is it a form that has a TinyMCE instance if (tinyMCE.getParam('save_on_tinymce_forms')) { for (n in tinyMCE.instances) { inst = tinyMCE.instances[n]; if (!tinyMCE.isInstance(inst)) continue; if (inst.formElement) { if (f == inst.formElement.form) { found = true; inst.isNotDirty = true; } } } } else found = true; // Is valid if (found) { tinyMCE.removeTinyMCEFormElements(f); tinyMCE.triggerSave(); } // Is it patched if (f.mceOldSubmit && p) f.mceOldSubmit(); }, submitPatch : function() { tinyMCE.formSubmit(this, true); }, onLoad : function() { var r, i, c, mode, trigger, elements, element, settings, elementId, elm; var selector, deselector, elementRefAr, form; // Wait for everything to be loaded first if (tinyMCE.settings.strict_loading_mode && this.loadingIndex != -1) { window.setTimeout('tinyMCE.onLoad();', 1); return; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -