TypeError:window.tinyMCE.execInstanceCommand不是函数

时间:2014-04-02 14:03:31

标签: tinymce-3

我无法在wordpress编辑器中添加任何短代码。它显示 - 未捕获的TypeError:对象[对象对象]没有方法' execInstanceCommand' 。 plesase帮助我解决这个问题。

代码(tinymce.js)

    function init() {
    tinyMCEPopup.resizeToInnerSize();
}

function getCheckedValue(radioObj) {
    if(!radioObj)
        return "";
    var radioLength = radioObj.length;
    if(radioLength == undefined)
        if(radioObj.checked)
            return radioObj.value;
        else
            return "";
    for(var i = 0; i < radioLength; i++) {
        if(radioObj[i].checked) {
            return radioObj[i].value;
        }
    }
    return "";
}

function tjshortcodesubmit() {

    var tagtext;

    var tj_shortcode = document.getElementById('tjshortcode_panel');

    // who is active ?
    if (tj_shortcode.className.indexOf('current') != -1) {
        var tj_shortcodeid = document.getElementById('tjshortcode_tag').value;
        switch(tj_shortcodeid)
{
case 0:
    tinyMCEPopup.close();
  break;

case "button":
    tagtext = "["+ tj_shortcodeid + "  url=\"#\" style=\"white\" size=\"small\"] Button text [/" + tj_shortcodeid + "]";
break;

case "alert":
    tagtext = "["+ tj_shortcodeid + " style=\"white\"] Alert text [/" + tj_shortcodeid + "]";
break;

case "toggle":
    tagtext = "["+ tj_shortcodeid + " title=\"Title goes here\"] Content here [/" + tj_shortcodeid + "]";
break;

case "tabs":
    tagtext="["+tj_shortcodeid + " tab1=\"Tab 1 Title\" tab2=\"Tab 2 Title\" tab3=\"Tab 3 Title\"] [tab]Insert tab 1 content here[/tab] [tab]Insert tab 2 content here[/tab] [tab]Insert tab 3 content here[/tab] [/" + tj_shortcodeid + "]";
break;

default:
tagtext="["+tj_shortcodeid + "] Insert you content here [/" + tj_shortcodeid + "]";
}
}

if(window.tinyMCE) {
        //TODO: For QTranslate we should use here 'qtrans_textarea_content' instead 'content'
            window.tinyMCE.execInstanceCommand('content', 'mceInsertContent', false, tagtext);
            //Peforms a clean up of the current editor HTML. 
            //tinyMCEPopup.editor.execCommand('mceCleanup');
            //Repaints the editor. Sometimes the browser has graphic glitches. 
            tinyMCEPopup.editor.execCommand('mceRepaint');
            tinyMCEPopup.close();
        }
        return;
    }

2 个答案:

答案 0 :(得分:14)

我遇到了同样的问题。将您的代码更改为此代码,它应该有效:

if(window.tinyMCE) {

    /* get the TinyMCE version to account for API diffs */
    var tmce_ver=window.tinyMCE.majorVersion;

    if (tmce_ver>="4") {
        window.tinyMCE.execCommand('mceInsertContent', false, tagtext);
    } else {
        window.tinyMCE.execInstanceCommand('content', 'mceInsertContent', false, tagtext);
    }

    tinyMCEPopup.editor.execCommand('mceRepaint');
    tinyMCEPopup.close();
    }
    return;
}

注意:由于缓存了.js文件,因此您需要进行硬刷新才能使其正常工作。如果您仍然看到相同的控制台错误,那可能就是原因。

答案 1 :(得分:0)

Scott B的答案部分是无效的。

TinyMCE版本3中execInstanceCommand的要点是在文档中的TinyMCE的特定实例上执行命令。如果没有指定实例,则在不指定实例的情况下调用execCommand将使用焦点实例或文档中的第一个实例。

要在TinyMCE版本4中指定要执行命令的实例,请在所需的编辑器实例上调用execCommand,如下所示:

tinyMCE.get(editorId).execCommand(...);