http://www.w3.org/TR/DOM-Level-2-Traversal-Range/
テストスイートを見つけて作成する必要があります。
うーん、そのスペックは私の目を出血させました
ええ、私はw3cテストスイートなしでそれを実装することをかなり恐れています
私がこれまでに見つけたもの:
これは有望に見えます: https :
これらはhttp://dom.spec.whatwg.org/で「バージョンレスDOM」をテストし、特にレベル2ではないことに注意してください。 ただし、実際のブラウザを反映している可能性が高くなります。
基本的に主な機能は完了しましたが、範囲を維持するのにかなりの問題があります。 基本的にすべてのDOMミューテーションを利用する必要がありますが、それを行うための最善の方法がわかりません。 ミューテーションイベントを使用する場合もあれば、対応するメソッドをプロトタイプにラップする場合もあります。
今、私はノードの削除を行う方法について疑問に思っていsuppress observers flag
設定されている場合、イベントは発行されませんが、範囲を更新する必要があります。 誰かアイデアはありますか? そのようなことのために、DOM全体に非常に単純な内部イベントシステムが必要かもしれないと思います。 たとえば、 _attrModified
にも使用できます。
@adrianlangそれは素晴らしいです!
これは、ミューテーションイベントを内部で使用することをやめ、代わりに無効にできないプライベートプロトコルを使用したいという私たちの長年の願望に関連しているようです。 #295を参照してください。 質問することがたくさんあることは知っていますが、それを修正することがこれを実現する方法かもしれません。
スパム+1コメントにより、機能がバックログの後ろに移動します。 代わりに投票ボタンを使用してください。 最近の+1を削除します。
ところで、半分完成したコードと同じように、私はまだそこにいます。 私はこれを最終的に成し遂げたいと思っています。
@adrianheine着陸したTreeWalkerの実装は、実装の完了に近づくのに役立ちますか?
私は時々 Range#createContextualFragment
を使用しますが、なぜこの便利なメソッドがそこにあるのか本当にわかりません(ドキュメントまたはDocumentFragmentに直接配置する価値があります)
だから私はテストのためにこれをすることになった
global.document.createRange = () => ({
createContextualFragment: str => JSDOM.fragment(str)
});
しかし、すべてのRangeAPIはもっと多くなります
@domenic @acustiが求めていたのは、これを検証するための次のステップは何だと思いますか?
私はこれを使おうとしています:
https://github.com/PrismJS/prism/issues/896
誰かが別の方法を勧めることはできますか? Prismで強調表示された差分と構文を強調表示するというアイデアが好きです。 Githubのハイライターよりも優れている可能性があります。
SourceTreeを二度と使用しないもう1つの理由で、 https: //www.patreon.com/に
@adrianheineあなたがあなたのWIPを共有するなら、私は手伝うことに興味があるかもしれません。
jestテストでエラーが発生しました。
TypeError: document.createRange is not a function
at createRange (node_modules/popper.js/src/utils/findCommonOffsetParent.js:27:26)
at findCommonOffsetParent (node_modules/popper.js/src/utils/getReferenceOffsets.js:16:85)
at Popper.getReferenceOffsets (node_modules/popper.js/src/methods/update.js:29:28)
at Popper.call (node_modules/popper.js/src/index.js:94:19)
at node_modules/popper.js/dist/umd/popper.js:51:7
ここでリンクを見つける
こんにちは、これからの進歩はありますか?
いつリリースされますか? したがって、jestは最新バージョンにアップグレードできます。
最も参考になるコメント
https://mobile.twitter.com/slicknet/status/782274190451671040