Jsdom: Implementar intervalos e travessia

Criado em 21 set. 2011  ·  18Comentários  ·  Fonte: jsdom/jsdom

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

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

Precisamos encontrar / escrever um conjunto de testes.

feature needs tests

Comentários muito úteis

Todos 18 comentários

ugh, essa especificação fez meus olhos sangrarem

sim, eu teria muito medo de implementá-lo sem um conjunto de testes w3c

O que descobri até agora:

  • Parece haver algum tipo de suíte de testes W3C para ele, mas aparentemente nunca foi publicado. Pelo menos o desenvolvedor do Xerces colocou as mãos nele . Entrei em contato com Michael do Xerces, talvez ele possa ajudar.
  • O Xerces tem testes chamados range, traversal e treewalker ; alguns deles podem ajudar
  • Além disso, o Acid3 tem um monte de testes complexos para este módulo

Observe que eles testam o "DOM sem versão" em http://dom.spec.whatwg.org/ e não no nível 2 especificamente. Porém, é mais provável que reflitam navegadores reais.

Basicamente, terminei a funcionalidade principal, mas tenho alguns problemas para manter os intervalos ativos. Preciso explorar basicamente todas as mutações DOM e não tenho certeza sobre a melhor maneira de fazer isso. Em alguns casos, usei os eventos de mutação; em outros, envolvi os métodos correspondentes no protótipo.

No momento, estou me perguntando como fazer a remoção do suppress observers flag definido, o evento não seria emitido, mas os intervalos ainda precisam ser atualizados. Alguém tem alguma idéia? Acho que talvez devêssemos ter um sistema de eventos internos muito simples em todo o DOM para essas coisas; também poderia ser usado para _attrModified , por exemplo.

@adrianlang isso é incrível!

Parece que isso está relacionado ao nosso desejo antigo de deixar de usar eventos de mutação internamente e, em vez disso, ter um protocolo privado que nunca pode ser desativado. Veja # 295. Eu sei que é pedir muito, mas consertar isso pode ser o caminho a percorrer para isso?

Os comentários de spam +1 fazem com que os recursos sejam movidos para o final da lista de pendências. Em vez disso, use os botões de votação. Excluindo os + 1s recentes.

Eu ainda estou lá, assim como meu código pela metade. Espero fazer isso eventualmente.

@adrianheine A implementação do TreeWalker que pousou o ajuda a ficar mais perto de terminar sua implementação?

Eu uso às vezes Range#createContextualFragment , mas eu realmente não sei por que esse método útil existe (ele mereceria estar diretamente no documento ou DocumentFragment)

então acabei fazendo isso para testes

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

Mas toda a API Range seria muito mais

@domenic Acho que o que @acusti estava perguntando é quais são os próximos passos para verificar isso?

Estou tentando usar isto:
https://github.com/PrismJS/prism/issues/896

Alguém pode recomendar um caminho alternativo? Eu gosto da ideia de ter um diff realçado e um realce de sintaxe com o Prism. Pode até sair melhor do que o marcador do Github.

Eu estaria disposto a https://www.patreon.com/ por mais um motivo para nunca usar o SourceTree novamente.

@adrianheine Posso estar interessado em ajudar se você compartilhar seu WIP.

Erros obtidos em testes de brincadeira.

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

Encontre o link aqui

Olá, algum progresso com isso?

Quando isso será lançado? Assim, jest pode atualizar para a versão mais recente.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

potapovDim picture potapovDim  ·  4Comentários

josephrexme picture josephrexme  ·  4Comentários

domenic picture domenic  ·  3Comentários

amfio picture amfio  ·  3Comentários

khalyomede picture khalyomede  ·  3Comentários