13

私は自分のサイトでNicEditWYSIWYGプラグインを使用しています。

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は私にとってうまく機能するので、まだ別のWYISWYGプラグインに切り替えるのは気が進まない...

(事前に)あなたの助けに感謝します。

4

3 に答える 3

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

私は、今後のプロジェクトのために多数のリッチ テキスト エディタを評価していて、nicEdit でサンプル ページを作成しなければならなかったときに、これに遭遇しました。

于 2011-04-02T01:24:04.753 に答える
16

https://github.com/danishkhan/NicEditのバージョンには、これと他のバグ修正が含まれています。

この特定の修正:https ://github.com/danishkhan/NicEdit/commit/efa6a1e8867b745b841157e919a0055cb626d2c4

于 2011-10-03T20:22:09.040 に答える
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();
},
于 2011-08-03T11:09:50.347 に答える