Jsdom: λ²”μœ„ 및 순회 κ΅¬ν˜„

에 λ§Œλ“  2011λ…„ 09μ›” 21일  Β·  18μ½”λ©˜νŠΈ  Β·  좜처: jsdom/jsdom

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

  • https://dom.spec.whatwg.org/#λ²”μœ„
  • https://dom.spec.whatwg.org/#traversal

ν…ŒμŠ€νŠΈ μŠ€μœ„νŠΈλ₯Ό μ°Ύμ•„μ„œ μž‘μ„±ν•΄μ•Ό ν•©λ‹ˆλ‹€.

feature needs tests

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

λͺ¨λ“  18 λŒ“κΈ€

uh, κ·Έ μŠ€νŽ™μ€ λ‚΄ λˆˆμ„ ν”Όλ‚˜κ²Œ ν–ˆλ‹€

예, w3c ν…ŒμŠ€νŠΈ μ œν’ˆκ΅° 없이 κ΅¬ν˜„ν•˜λŠ” 것이 맀우 λ‘λ ΅μŠ΅λ‹ˆλ‹€.

μ§€κΈˆκΉŒμ§€ μ•Œμ•„λ‚Έ 것:

  • 이λ₯Ό μœ„ν•œ μΌμ’…μ˜ W3C ν…ŒμŠ€νŠΈ μ œν’ˆκ΅°μ΄ μžˆλŠ” 것 κ°™μ§€λ§Œ λΆ„λͺ…νžˆ κ²Œμ‹œλ˜μ§€λŠ” μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 적어도 Xerces κ°œλ°œμžλŠ” 손 에 λ„£μ—ˆ
  • Xercesμ—λŠ” range, traversal 및 treewalker λΌλŠ” ν…ŒμŠ€νŠΈκ°€
  • λ˜ν•œ Acid3 μ—λŠ” 이 λͺ¨λ“ˆμ— λŒ€ν•œ λ³΅μž‘ν•œ ν…ŒμŠ€νŠΈκ°€ 많이 μžˆμŠ΅λ‹ˆλ‹€.

이것은 μœ λ§ν•΄ λ³΄μž…λ‹ˆλ‹€: https://github.com/w3c/web-platform-tests/tree/master/dom

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)
});

κ·ΈλŸ¬λ‚˜ λͺ¨λ“  Range APIλŠ” 훨씬 더

@domenic @acusti κ°€ μš”μ²­ν•œ 것은 이λ₯Ό ν™•μΈν•˜κΈ° μœ„ν•œ λ‹€μŒ λ‹¨κ³„λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

λ‚˜λŠ” 이것을 μ‚¬μš©ν•˜λ €κ³ ν•©λ‹ˆλ‹€ :
https://github.com/PrismJS/prism/issues/896

λˆ„κ΅°κ°€ λ‹€λ₯Έ 경둜λ₯Ό μΆ”μ²œν•  수 μžˆμŠ΅λ‹ˆκΉŒ? λ‚˜λŠ” Prism으둜 κ°•μ‘°λœ diff와 ꡬ문 κ°•μ‘°λ₯Ό κ°–λŠ” 아이디어λ₯Ό μ’‹μ•„ν•©λ‹ˆλ‹€. Github의 ν˜•κ΄‘νŽœλ³΄λ‹€ 더 잘 λ‚˜μ˜¬ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

SourceTreeλ₯Ό λ‹€μ‹œλŠ” μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 또 ν•˜λ‚˜μ˜ μ΄μœ λŠ” https://www.patreon.com/ μž…λ‹ˆλ‹€.

@adrianheine WIPλ₯Ό κ³΅μœ ν•΄ μ£Όμ‹œλ©΄ 도와

농담 ν…ŒμŠ€νŠΈμ—μ„œ 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.

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 λ“±κΈ‰