我的问题是我正在使用JQuery的CKEditor 3.4插件,并且在编辑器上执行$(selector).val(html)调用时,它在IE 7 + 8中给出了一个错误:
错误:'this.$.innerHTML'为null或不是对象
...在调试器中运行时,指向巨大的CKEditor.js中的这行代码:
getHtml:function(){var i=this.$.innerHTML;return c?i.replace(/<\?[^>]*>/g,''):i;}
Run Code Online (Sandbox Code Playgroud)
...在源代码中转换为:
getHtml : function()
{
var retval = this.$.innerHTML;
// Strip <?xml:namespace> tags in IE. (#3341).
return CKEDITOR.env.ie ? retval.replace( /<\?[^>]*>/g, '' ) : retval;
},
Run Code Online (Sandbox Code Playgroud)
我的违规代码(剥离,但仍然给出错误):
var editor_data = $("textarea#body").val();
$("textarea#body").val(editor_data);
Run Code Online (Sandbox Code Playgroud)
...以及后代的textarea代码:
<textarea name="body" rows="15" cols="50" class="wysiwyg" id="body"></textarea>
Run Code Online (Sandbox Code Playgroud)
我试过在IE8中使用jsFiddle进行复制,但奇怪的是它在那里按预期工作.我也很乐意提供一份工作样本,但遗憾的是我不能出于我无法控制的原因.
我也尝试了这个修复程序,它清除了错误问题,但是在那之后setData没有按预期工作,只是用任何东西覆盖了编辑器内容.我承认这个问题+修复有点过头了......:http://dev.ckeditor.com/ticket/4566
(对不起,很长的帖子:S)我也尝试将直接JavaScript API用于CKEditor(放弃jQuery集成),并抛出相同的错误.
任何人都有他们想要我试图解决这个问题的任何东西,或者对它可能有什么预感?非常感谢!