Ошибка типа: window.tinyMCE.execInstanceCommand не является функцией

Я не могу добавить шорткод в редактор WordPress. это показывает - Uncaught TypeError: Object [object Object] не имеет метода execInstanceCommand. Пожалуйста, помогите мне решить это.

код (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 ответа

У меня такая же проблема. Измените свой код на это, и оно должно работать:

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 кэшируются, вам нужно выполнить полное обновление, чтобы это работало. Если вы все еще видите те же ошибки консоли, это, вероятно, будет причиной.

Ответ Scott B частично неточен.

Точка execInstanceCommand в TinyMCE версии 3 нужно было выполнить команду на конкретном экземпляре TinyMCE в документе. призвание execCommand без указания экземпляра будет использоваться фокусированный экземпляр или первый экземпляр в документе, если ни один из них в данный момент не сфокусирован.

Чтобы указать экземпляр, на котором вы хотите выполнить команду в TinyMCE версии 4, вызовите execCommand на нужном экземпляре редактора вот так:

tinyMCE.get(editorId).execCommand(...);
Другие вопросы по тегам