Jsdom: рд░реЗрдВрдЬ рдФрд░ рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рд▓рд╛рдЧреВ рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 21 рд╕рд┐рддре░ 2011  ┬╖  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 рдореЗрдВ рд░реЗрдВрдЬ, рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдФрд░ рдЯреНрд░реАрд╡реЙрдХрд░ рдирд╛рдордХ рдкрд░реАрдХреНрд╖рдг
  • рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрд╕рд┐рдб3 рдореЗрдВ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЬрдЯрд┐рд▓ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ

рдпрд╣ рдЖрд╢рд╛рдЬрдирдХ рд▓рдЧ рд░рд╣рд╛ рд╣реИ: https://github.com/w3c/web-platform-tests/tree/master/dom

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡реЗ http://dom.spec.whatwg.org/ рдкрд░ "рд╕рдВрд╕реНрдХрд░рдг рд░рд╣рд┐рдд рдбреЛрдо" рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реНрддрд░ 2 рдирд╣реАрдВред рд▓реЗрдХрд┐рди, рд╡реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд░рдЦрддреЗ рд╣реИрдВред

рдореИрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЗрд╡ рд░рдЦрдиреЗ рдореЗрдВ рдореБрдЭреЗ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рдореБрдЭреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдбреАрдУрдПрдо рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдореЗрдВ рдЯреИрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдореИрдВрдиреЗ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдореИрдВрдиреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рдкреЗрдЯ рд▓рд┐рдпрд╛ред

рдЕрднреА рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдиреЛрдб рдХреЛ рдХреИрд╕реЗ suppress observers flag рд╕реЗрдЯ рдХреЗ рд╕рд╛рде, рдИрд╡реЗрдВрдЯ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЛ рдЕрднреА рднреА рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреВрд░реЗ рдбреЛрдо рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдЖрдВрддрд░рд┐рдХ рдШрдЯрдирд╛ рдкреНрд░рдгрд╛рд▓реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП; рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ _attrModified рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@adrianlang рдпрд╣ рдХрдорд╛рд▓ рд╣реИ!

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рджреВрд░ рдЬрд╛рдиреЗ рдХреА рд╣рдорд╛рд░реА рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рдЗрдЪреНрдЫрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдирд┐рдЬреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИ рдЬрд┐рд╕реЗ рдХрднреА рднреА рдЕрдХреНрд╖рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред #295 рджреЗрдЦреЗрдВред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреВрдЫрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рд╕реНрдкреИрдо +1 рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдмреИрдХрд▓реЙрдЧ рдХреЗ рдкреАрдЫреЗ рдЪрд▓реА рдЬрд╛рддреА рд╣реИрдВред рдХреГрдкрдпрд╛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╡реЛрдЯрд┐рдВрдЧ рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд╣рд╛рд▓ рдХреЗ +1 рд╣рдЯрд╛рдирд╛.

рдореИрдВ рдЕрднреА рднреА рд╡рд╣реАрдВ рд╣реВрдВ, рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдЬреИрд╕рд╛ рдХрд┐ рдореЗрд░рд╛ рдЖрдзрд╛-рдЕрдзреВрд░рд╛ рдХреЛрдб рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЕрдВрддрддрдГ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

@adrianheine TreeWalker рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреЛ рдорджрдж рдЙрддрд░рд╛ рдЖрдк рдХрд┐рд╕реА рднреА рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░рд┐рд╖реНрдХрд░рдг рдХреА рдУрд░ рдмрдврд╝рддреЗ рдЬрд╛рдПрдВрдЧреЗ рдХрд░рддрд╛ рд╣реИ?

рдореИрдВ рдХрднреА-рдХрднреА Range#createContextualFragment рд╣реВрдВ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧреА рддрд░реАрдХрд╛ рдХреНрдпреЛрдВ рд╣реИ (рдпрд╣ рд╕реАрдзреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝, рдпрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдлрд╝реНрд░реЗрдЧрдореЗрдВрдЯ рдкрд░ рд╣реЛрдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдЧрд╛)

рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛

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

рд▓реЗрдХрд┐рди рд╕рднреА рд░реЗрдВрдЬ рдПрдкреАрдЖрдИ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛрдВрдЧреЗ

@domenic рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @acusti рдХреНрдпрд╛ рдкреВрдЫ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЧрд▓реЗ рдЪрд░рдг рдХреНрдпрд╛ рд╣реИрдВ?

рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
https://github.com/PrismJS/prism/issues/896

рдХреНрдпрд╛ рдХреЛрдИ рд╡реИрдХрд▓реНрдкрд┐рдХ рдорд╛рд░реНрдЧ рд╕реБрдЭрд╛ рд╕рдХрддрд╛ рд╣реИ? рдореБрдЭреЗ рдкреНрд░рд┐рдЬреНрдо рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдП рдЧрдП рдЕрдВрддрд░ рдФрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИред рдЬреАрдердм рдХреЗ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рд╕реЗ рднреА рдмреЗрд╣рддрд░ рдирд┐рдХрд▓ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВ рдПрдХ рдФрд░ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП https://www.patreon.com/ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВ рдХрд┐ рдореИрдВ рдлрд┐рд░ рдХрднреА SourceTree рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реВрдВред

@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

рд▓рд┐рдВрдХ рдпрд╣рд╛рдВ рдЦреЛрдЬреЗрдВ

рдирдорд╕реНрддреЗ, рдЗрд╕рд╕реЗ рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рд╣реБрдИ?

рдЗрд╕реЗ рдХрдм рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛? рддреЛ рдЬреЗрд╕реНрдЯ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

JacksonGariety picture JacksonGariety  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

camelaissani picture camelaissani  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Progyan1997 picture Progyan1997  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jhegedus42 picture jhegedus42  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mitar picture mitar  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ