Jsdom: 範囲とトラバーサルを実装する

作成日 2011年09月21日  ·  18コメント  ·  ソース: jsdom/jsdom

http://www.w3.org/TR/DOM-Level-2-Traversal-Range/

  • https://dom.spec.whatwg.org/#ranges
  • https://dom.spec.whatwg.org/#traversal

テストスイートを見つけて作成する必要があります。

feature needs tests

最も参考になるコメント

全てのコメント18件

うーん、そのスペックは私の目を出血させました

ええ、私はw3cテストスイートなしでそれを実装することをかなり恐れています

私がこれまでに見つけたもの:

  • そのためのある種のW3Cテストスイートが存在するようですが、明らかに公開されることはありませんでした。 少なくともXerces開発者はそれを手に入れ
  • Xercesには、範囲、トラバーサル、ツリーウォーカーと呼ばれるテストが
  • また、 Acid3にはこのモジュール用の複雑なテストがたくさんあります

これは有望に見えます: 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は最新バージョンにアップグレードできます。

このページは役に立ちましたか?
0 / 5 - 0 評価