Chrome中的NicEdit错误

Tre*_*rev 13 javascript google-chrome nicedit

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

我注意到,当在Chrome中实例化NicEdit时,会生成以下Javascript错误:

Uncaught TypeError: Object  has no method 'createRange'
Run Code Online (Sandbox Code Playgroud)

这并不能阻止插件工作,但我想尽可能防止这种情况发生.这是令人讨厌的方法:

getRng : function() {
        var s = this.getSel();
        if(!s) { return null; }
        return (s.rangeCount > 0) ? s.getRangeAt(0) : s.createRange();
}
Run Code Online (Sandbox Code Playgroud)

作为一个项目,NicEdit似乎已经死了,这就是为什么我在这里问这个问题而不是在NicEdit论坛上.我希望有人知道这个问题的'quickfix'.在所有其他方面,NicEdit对我来说效果很好,所以我不愿意转换到另一个WYISWYG插件......

在此先感谢您的帮助.

小智 24

问题是Webkit的选择对象的实现没有定义createRange( )方法.该方法似乎特定于Internet Explorer.对于Webkit和Gecko DOM实现,该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;
 },
Run Code Online (Sandbox Code Playgroud)

我遇到了这个,因为我正在为即将开展的项目评估一些富文本编辑器,并且必须使用nicEdit创建一个示例页面.