World Wide Web Consortiumによって定義されたDOM標準の一部であるjavascriptには素晴らしいRangeオブジェクトがあります。 IE7はRangeサポートを含むことを約束しましたが、それは言葉のままでした。 IE(およびIEのみ)で利用可能なTextRangeオブジェクトは水を保持せず、深刻なものには適していません(このオブジェクトの狂気についての記事全体を書くことができます)。
私の仕事は、完全に有効で冗長ではないHTMLを生成するWYSIWYGエディターを書くことでした。 範囲は不可欠でした。 インターネット上の完成したものから、特定のJorgen Horstinkの動作しないスクリプトのみを見つけたため、IE用のRangeはゼロから作成する必要がありました。
スクリプトは非常に重いことが判明しました(41 kB)が、スペース、タブを削除し、変数の名前を短くすると、最大15 kBまで圧縮できると思います。 Exploreraの癖により、スクリプトは3回完全に書き換えられました。 IEのRangeの作業を模倣するオブジェクトは、既製のWYSIWYGエディターでテストされ、その作業は完全にRangeに基づいています。
作業の欠点の中で、私は次のことに注意することができます。
- DOMで何らかの操作(挿入や削除など)が行われた場合、範囲のstartOffsetまたはendOffsetの値は正しくない場合があります。 しかし、これは、特に他のブラウザではそのような問題があるため(特にOperaで)、スクリプトの正しいアクションのシーケンスを単にバイパスします。
以下は、IEのRangeオブジェクトの使用例です。
var range = new Range (document.selection.createRange()); // range
またはいつものように
var range = document.createRange(); // , range
ここからオブジェクトをダウンロードできます:
IEのW3C範囲スクリプトがあなたにとって有用であれば、私はうれしいです。