Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript CKEditor+;IE7&x2B;8';空或不是对象';错误_Javascript_Jquery_Dom_Ckeditor - Fatal编程技术网

Javascript CKEditor+;IE7&x2B;8';空或不是对象';错误

Javascript CKEditor+;IE7&x2B;8';空或不是对象';错误,javascript,jquery,dom,ckeditor,Javascript,Jquery,Dom,Ckeditor,我的问题是,我正在使用用于jQuery的CKEditor 3.4插件,当在编辑器上执行$(selector).val(html)调用时,它在IE 7+8中给了我一个错误: 错误: “this.$.innerHTML”为空或不是对象 …在调试器中运行时,指向巨大的CKEditor.js中的以下代码行: getHtml:function(){var i=this.$.innerHTML;return c?i.replace(/<\?[^>]*>/g,''):i;} 。。。以及子孙

我的问题是,我正在使用用于jQuery的CKEditor 3.4插件,当在编辑器上执行$(selector).val(html)调用时,它在IE 7+8中给了我一个错误:

错误: “this.$.innerHTML”为空或不是对象

…在调试器中运行时,指向巨大的CKEditor.js中的以下代码行:

getHtml:function(){var i=this.$.innerHTML;return c?i.replace(/<\?[^>]*>/g,''):i;}
。。。以及子孙后代的文本区号:

<textarea name="body" rows="15" cols="50" class="wysiwyg" id="body"></textarea>

我曾尝试在IE8中的JSFIDLE中复制,但奇怪的是,它在IE8中按预期工作。我也想提供一个工作样品,但不幸的是,由于我无法控制的原因,我不能提供

我也尝试过这个修复,它解决了错误问题,但在那之后,setData没有按预期工作,只是重写了编辑器内容,没有任何内容。我承认这个问题+修复有点让我不知所措

(很抱歉,长篇文章:S)我也尝试将直接JavaScript API用于CKEditor(放弃jQuery集成),但它抛出了相同的错误


有人想让我来解决这个问题吗,或者有什么预感?非常感谢

可能不是最好的解决方案,但请看一下:

它声称

getHtml:function(){var i=this.$.innerHTML;return c?i.replace(/<\?[^>]*>/g,''):i;},
这将解决问题


我并不是说这是正确的答案,但我今天也遇到了同样的问题,而且(现在)它似乎有效

就个人而言,我不喜欢现有的答案,即修改源代码,因为一旦更新了ckEditor,就必须记住再次修改源代码。我遇到了与原始海报相同的问题,并找到了一个被认为是黑客的修复程序,但完全可用。简单地说,在IE8中,一次尝试/捕捉让一切变得美好和快乐。现在在IE7中进行测试。此修复程序的另一个好处是,当数据失败时,您不会留下空白数据,而是获得了您试图检索的实际内容

var editor = $('textarea.editor').ckeditorGet();
var vPageContent = "";
try{
    vPageContent = editor.getData();//function call fails here
} catch(err){
    vPageContent = editor.getData();//but will work here
}

小心多加逗号。IE不喜欢exra逗号。您可以使用

Hi检查代码中是否有多余的逗号!我试过了,它确实纠正了错误。然而,它没有任何内容覆盖了我的内容(这看起来很有意义,修复)。由于此.$返回false,因此getHtml()返回空字符串,这就是内容被覆盖的原因。你也看到了吗?有没有一个网页我可以看,也许可以收集一些信息?谢谢这是给我的,真烦人!
getHtml:function(){var i=this.$.innerHTML;return c?i.replace(/<\?[^>]*>/g,''):i;},
getHtml:function(){return (this.$) ? this.$.innerHTML : "";},
var editor = $('textarea.editor').ckeditorGet();
var vPageContent = "";
try{
    vPageContent = editor.getData();//function call fails here
} catch(err){
    vPageContent = editor.getData();//but will work here
}