非常奇怪的情况。我想将函数CKEDITOR.instances.Content.insertText(期望字符串作为输入)作为参数传递给我的JS函数,该函数使用自己的字符串调用它。如果我直接传递CKEDITOR.instances.Content.insertText,它不起作用并导致
未捕获的TypeError:this.fire不是函数(...)
但是当我使用包装器(在下面称为w)时它可以正常工作。传入的参数类型(insertText)报告为函数,为什么它不起作用?它必须是我不知道的某种特殊功能。有任何想法吗?由于我有一个解决方法,我感兴趣的是它为什么不起作用,而不是如何解决它。
var f = function(func,arg)
{
func(arg);
}
var w = function (arg) // Wrapper around insertText.
{
CKEDITOR.instances.Content.insertText(arg);
}
var myFunc = function(arg) // Simulating insertText.
{
alert(arg);
}
CKEDITOR.on("instanceReady", function() {
f(myFunc,'test'); // works, alerts correctly
f(w, 'does work'); // works, appends text to CKEditor window
f(CKEDITOR.instances.Content.insertText, 'does not work'); // error, while the argument is confirmed as function!
});