我已经在现有插件中添加了一个按钮(插件工作正常)。该按钮动态创建一个虚拟键盘$('#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行