Javascript CKEditor+;IE7&x2B;8';空或不是对象';错误
我的问题是,我正在使用用于jQuery的CKEditor 3.4插件,当在编辑器上执行$(selector).val(html)调用时,它在IE 7+8中给了我一个错误: 错误: “this.$.innerHTML”为空或不是对象 …在调试器中运行时,指向巨大的CKEditor.js中的以下代码行: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;} 。。。以及子孙
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
}