Jsdom: Anbaugerätebereiche und Traversal

Erstellt am 21. Sept. 2011  ·  18Kommentare  ·  Quelle: jsdom/jsdom

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

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

Wir müssen eine Testsuite finden/schreiben.

feature needs tests

Hilfreichster Kommentar

Alle 18 Kommentare

ähm, diese Spezifikation hat meine Augen bluten lassen

Ja, ich hätte ziemliche Angst, es ohne eine w3c-Testsuite zu implementieren

Was ich bisher herausgefunden habe:

  • Es scheint eine Art W3C-Testsuite dafür zu geben, aber es wurde anscheinend nie veröffentlicht. Wenigstens bekam der Xerces Entwickler seine Hände auf sie . Ich habe Michael von Xerces kontaktiert, vielleicht kann er helfen.
  • Xerces hat Tests namens Range, Traversal und Treewalker ; einige von ihnen könnten helfen
  • Außerdem bietet Acid3 eine Reihe komplexer Tests für dieses Modul

Beachten Sie, dass diese das "versionslose DOM" unter http://dom.spec.whatwg.org/ und nicht speziell auf Level 2 testen. Sie spiegeln jedoch eher echte Browser wider.

Ich bin im Grunde mit der Hauptfunktionalität fertig, aber ich habe einige Probleme, die Bereiche live zu halten. Ich muss im Grunde jede DOM-Mutation anzapfen und bin mir nicht sicher, wie das am besten geht. In einigen Fällen habe ich die Mutationsereignisse verwendet, in anderen Fällen habe ich die entsprechenden Methoden auf den Prototypen gewickelt.

Im Moment frage ich mich, wie man Knoten entfernt . Wenn suppress observers flag gesetzt ist, wird das Ereignis nicht ausgegeben, aber die Bereiche müssen noch aktualisiert werden. Hat jemand eine Idee? Ich denke, vielleicht sollten wir für solche Dinge ein sehr einfaches internes Ereignissystem im gesamten DOM haben; es könnte zum Beispiel auch für _attrModified .

@adrianlang das ist toll!

Es scheint, dass dies mit unserem langjährigen Wunsch zusammenhängt, Mutationsereignisse nicht intern zu verwenden und stattdessen ein privates Protokoll zu verwenden, das niemals deaktiviert werden kann. Siehe #295. Ich weiß, es ist viel zu fragen, aber das könnte der richtige Weg sein?

Spam +1-Kommentare führen dazu, dass Funktionen in den hinteren Teil des Backlogs verschoben werden. Bitte verwenden Sie stattdessen die Abstimmungsschaltflächen. Löschen der letzten +1.

Ich bin übrigens immer noch da, genauso wie mein halbfertiger Code. Ich hoffe, dass dies irgendwann fertig wird.

@adrianheine Hilft

Ich verwende manchmal Range#createContextualFragment , ich weiß jedoch nicht wirklich, warum diese nützliche Methode vorhanden ist (sie würde es verdienen, direkt auf dem Dokument oder DocumentFragment zu sein).

Also habe ich das für Tests gemacht

global.document.createRange = () => ({
  createContextualFragment: str => JSDOM.fragment(str)
});

Aber die ganze Range API wäre noch viel mehr

@domenic Ich denke, was @acusti gefragt hat, ist, was die nächsten Schritte sind, um dies zu überprüfen?

Ich versuche das zu verwenden:
https://github.com/PrismJS/prism/issues/896

Kann jemand einen alternativen Weg empfehlen? Ich mag die Idee, mit Prism ein hervorgehobenes Diff und Syntax-Highlighting zu haben. Könnte sogar besser herauskommen als der Highlighter von Github.

Ich wäre bereit, https://www.patreon.com/ aus einem weiteren Grund zu verwenden, SourceTree nie wieder zu verwenden.

@adrianheine Ich könnte teilst .

Habe Fehler in Scherztests.

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

Link hier finden

Hallo, irgendwelche Fortschritte daraus?

Wann wird es veröffentlicht? So konnte jest auf die neueste Version upgraden.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen