我在现有插件中添加了一个按钮(该插件运行良好)。该按钮动态创建一个虚拟键盘$('#vkb')
,让用户选择一些符号。我第一次在 tinyMCE 上执行该按钮时,它可以工作,我可以选择符号并将它们插入到 TinyMCE 编辑器中。
但是在第一个正常运行的实例中的某个时刻,我得到了错误TypeError: K is undefined
。当前实例继续工作,尽管调用 ed.execCommand 不断出现K undefined
错误。但在那之后,创建 TinyMCE 工具栏的所有其他实例,都会发生以下情况:
ed.execCommand('mceInsertContent', false, str);
插件代码中的命令不起作用,并且- 这个错误出现了:(
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 行