http://www.w3.org/TR/DOM-Level-2-Traversal-Range/
рд╣рдореЗрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдЦреЛрдЬрдиреЗ/рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдЙрд╣, рдЙрд╕ рдХрд▓реНрдкрдирд╛ рдиреЗ рдореЗрд░реА рдЖрдБрдЦреЛрдВ рд╕реЗ рдЦреВрди рдмрд╣рд╛ рджрд┐рдпрд╛
рд╣рд╛рдБ, рдореИрдВ рдЗрд╕реЗ w3c рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдХреЗ рдмрд┐рдирд╛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдмрд╣реБрдд рдбрд░рддрд╛ рд╣реВрдБ
рдореБрдЭреЗ рдЕрдм рддрдХ рдХреНрдпрд╛ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ:
рдпрд╣ рдЖрд╢рд╛рдЬрдирдХ рд▓рдЧ рд░рд╣рд╛ рд╣реИ: 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
рд▓рд┐рдВрдХ рдпрд╣рд╛рдВ рдЦреЛрдЬреЗрдВ
рдирдорд╕реНрддреЗ, рдЗрд╕рд╕реЗ рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рд╣реБрдИ?
рдЗрд╕реЗ рдХрдм рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛? рддреЛ рдЬреЗрд╕реНрдЯ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
https://mobile.twitter.com/slicknet/status/782274190451671040