我在我的网站上使用了NicEdit所见即所得插件。
我注意到,当在Chrome中实例化NicEdit时,会生成以下Javascript错误:
Uncaught TypeError: Object has no method 'createRange'这不会阻止插件的工作,但如果可能的话,我想阻止它。下面是令人不快的方法:
getRng : function() {
var s = this.getSel();
if(!s) { return null; }
return (s.rangeCount > 0) ? s.getRangeAt(0) : s.createRange();
}作为一个项目,NicEdit似乎已经死了,这就是为什么我在这里而不是在NicEdit论坛上问这个问题的原因。我希望有人知道这个问题的“快速修复”方法。在所有其他方面,NicEdit对我来说都工作得很好,所以我还不愿意改变到一个不同的所见即所得插件……
(提前)感谢你的帮助。
发布于 2011-04-02 09:24:05
问题是Webkit的selection对象的实现没有定义createRange( )方法。该方法似乎就是specific to Internet Explorer。对于Webkit和Gecko DOM implementations,createRange( )方法在document对象上定义。有了这些知识,getRng( )的修复就变成了:
getRng : function() {
var s = this.getSel();
var rng;
if(!s) { return null; }
if (s.rangeCount > 0) {
rng = s.getRangeAt(0);
} else if ( typeof s.createRange === 'undefined' ) {
rng = document.createRange();
} else {
rng = s.createRange();
}
return rng;
},我在为一个即将到来的项目评估许多富文本编辑器时遇到了这个问题,我不得不用nicEdit创建一个示例页面。
发布于 2011-10-04 04:22:09
发布于 2011-08-03 19:09:50
相同的代码,用nicEdit current design编写:
getRng : function() {
var s = this.getSel();
if(!s) { return null; }
return (s.rangeCount > 0) ? s.getRangeAt(0) : (typeof s.createRange == 'undefined') ? document.createRange() : s.createRange();
},https://stackoverflow.com/questions/5374629
复制相似问题