CKEditor在IE8,9中setReadOnly时报没有权限异常

环境: CKEditor 4.0.1beta
浏览器: IE8 9

Ajax回调时设置

CKEDITOR.instances[id].setReadOnly(readonly) 


在IE下报错"没有权限",在chrome ff下正常。

跟代码发现压缩后ckeditor.js的以下代码运行异常
CKEDITOR.instances.id._.editable.$.isContentEditable


本来以为是iframe跨域导致的,不过本地代码没有跨域。

后来发现在setReadOnly之前调用了
CKEDITOR.instances[id].setData(_val);


之后属性就无法访问了。

原因: CKEDITOR的setData方法是延时操作的,实现是通过dataReady触发iframe中值的设置,因此在setData之后马上访问或修改iframe中的元素会报错,很有可能除了setReadOnly还有其他方法也会导致在IE中出现此问题。 因为是压缩代码,没有看过源码 不太了解这个锁是怎么回事儿。

另见帖子:
http://jiangzhenghua.iteye.com/blog/793282

解决方法: 在setData后,对setReadOnly进行延时处理即可。

setTimeout(function(){CKEDITOR.instances[id].setReadOnly(isReadOnly)},150);

你可能感兴趣的:(IE,ckeditor,没有权限,setreadonly)