1

我在现有插件中添加了一个按钮(该插件运行良好)。该按钮动态创建一个虚拟键盘$('#vkb'),让用户选择一些符号。我第一次在 tinyMCE 上执行该按钮时,它可以工作,我可以选择符号并将它们插入到 TinyMCE 编辑器中。

但是在第一个正常运行的实例中的某个时刻,我得到了错误TypeError: K is undefined。当前实例继续工作,尽管调用 ed.execCommand 不断出现K undefined错误。但在那之后,创建 TinyMCE 工具栏的所有其他实例,都会发生以下情况:

  1. ed.execCommand('mceInsertContent', false, str);插件代码中的命令不起作用,并且
  2. 这个错误出现了:(t is null我认为t最有可能的地方this,即编辑器本身)。

以下是我的代码:

      // Registering the command
       ed.addCommand('mceArIndic', function() {
       _dovkb();

    function _dovkb()
    {  // some code for a virtual keybaord that lets users choose indic symbols
           // the final symbols are stored in a variable called 'ret'
           // I want ret's contents to be inserted in the tinymce editor

           // the code below is what happens when the closing key on the virtual keyboard is clicked:

    $('#vkbstop').live('click',function(e){
    var ret = $('#numoutput').val();
    $('#numoutput').val('');
    $('#vkb').remove();
    console.log("t.inserting");
            /* THIS IS WHERE K SOMETIMES BECOMES UNDEFINED, THEN ALL */ 
            /* DYNAMICALLY-CREATED TINMYCE INSTANCES THAT FOLLOW HAVE T AS NULL */
    ed.execCommand('mceInsertContent', false, ret); 
    toprint = '';
});

    // Register arindic button
    ed.addButton('arindic', {
        title : 'Type Arabic/Indic digits',
        cmd : 'mceArIndic',
        image : url + '/img/indic.png'
    });

在代码的末尾,插件已正确注册。

我想也许编辑器还没有完成加载,但事实并非如此,因为我也在等待很长时间后尝试过。为什么ed.execCommand有时会给出该K is null错误,以及为什么在此之后对命令的所有尝试都只是说t is null,虽然不是,因为其他按钮工作正常。

编辑

切换到 tiny_mce_dev.js 后,它给了我一个稍微不同的错误,而不是“K”,而不是“选择”: TypeError: selection is null 更多信息: ieRng = selection.getRng();-Editor.js 第 897 行

4

0 回答 0