Chrome中的NicEdit错误

时间:2011-03-21 06:50:12

标签: javascript google-chrome nicedit

我在我的网站上使用了NicEdit WYSIWYG插件。

我注意到,当在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论坛上。我希望有人知道这个问题的'quickfix'。在所有其他方面,NicEdit对我来说效果很好,所以我不愿意转换到另一个WYISWYG插件......

先谢谢你的帮助。

3 个答案:

答案 0 :(得分:24)

问题是Webkit的选择对象的实现没有定义createRange( )方法。该方法似乎是specific to Internet Explorer。对于Webkit和Gecko DOM implementationscreateRange( )方法定义了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创建一个示例页面。

答案 1 :(得分:15)

答案 2 :(得分:4)

相同的代码,用nicEdit当前设计编写:

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();
},