环境: CKEditor 4.0.1beta
浏览器: IE8 9
Ajax回调时设置
在IE下报错"没有权限",在chrome ff下正常。
跟代码发现压缩后ckeditor.js的以下代码运行异常
本来以为是iframe跨域导致的,不过本地代码没有跨域。
后来发现在setReadOnly之前调用了
之后属性就无法访问了。
原因: CKEDITOR的setData方法是延时操作的,实现是通过dataReady触发iframe中值的设置,因此在setData之后马上访问或修改iframe中的元素会报错,很有可能除了setReadOnly还有其他方法也会导致在IE中出现此问题。 因为是压缩代码,没有看过源码 不太了解这个锁是怎么回事儿。
另见帖子:
[url]http://jiangzhenghua.iteye.com/blog/793282[/url]
解决方法: 在setData后,对setReadOnly进行延时处理即可。
浏览器: 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中出现此问题。 因为是压缩代码,没有看过源码 不太了解这个锁是怎么回事儿。
另见帖子:
[url]http://jiangzhenghua.iteye.com/blog/793282[/url]
解决方法: 在setData后,对setReadOnly进行延时处理即可。
setTimeout(function(){CKEDITOR.instances[id].setReadOnly(isReadOnly)},150);