Jsdom: MutationObserver рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 8 рдЬреВрди 2013  ┬╖  53рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: jsdom/jsdom

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╕рднреА 53 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рдпрд╣ рднреА рдЪрд╛рд╣рд┐рдПред рдЕрдЧрд░ рдХреЛрдИ рдореБрдЭреЗ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддреЛ рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЛ рддреИрдпрд╛рд░ рд╣реВрдВред

@ SegFaultx64 рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдкрд╣рд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ schettino72 рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ URL "рд╕рд╣реА рджрд┐рд╢рд╛" рд╣реИред

рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рдпрд╣ рднреА рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдЗрддрдиреА рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХреЛрдВ рдХреЛ рдХреИрд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВрдЧреЗред рдХреНрдпрд╛ рдРрд╕реА рдХреЛрдИ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдЗрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬреЗрдВ рдЬрдорд╛ рд╣реЛ рд░рд╣реА рд╣реИрдВ?

@ SegFaultx64 рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ jsdom рдХреЗ рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИред рдЬрдм рдореИрдВрдиреЗ NS рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ (#727 рджреЗрдЦреЗрдВ; рдирд╛рдордорд╛рддреНрд░ рд░реВрдк рд╕реЗ, рдпрд╣ рдПрдХ рдмрдЧ рдлрд┐рдХреНрд╕ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП jsdom рдХреА рд╣рд┐рдореНрдордд рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдмрджрд▓рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ) рдореИрдВрдиреЗ рдЕрдиреБрд░реВрдк рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреА рддрд▓рд╛рд╢ рдХреА рдФрд░ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдирдИ рдХрдХреНрд╖рд╛рдПрдВ/рдбреЗрдЯрд╛/ рдЖрджрд┐ред рдореИрдВрдиреЗ рдЬреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕реЛрдЪрд╛ рдерд╛, рдЙрд╕рдХреЗ рд╕рд╛рде рдореИрдВ рдХрд╛рдлреА рдЖрдЧреЗ рдмрдврд╝ рдЧрдпрд╛, рдбреЛрдорд┐рдирд┐рдХ рдиреЗ рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдХреАрдВ, рдореИрдВрдиреЗ рд╕рдорд╛рдпреЛрдЬрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛, рдФрд░ рд╡рд╣ рдерд╛ред

@lddubeau рдареАрдХ рд╣реИ, рд╕рдВрдХреЗрдд рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ MutationObserver https://github.com/megawac/MutationObserver.js/blob/master/MutationObserver.js рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓рд╛ рд╢рд┐рдо рдорд┐рд▓рд╛

рдореЗрд░реА рдПрдХрдорд╛рддреНрд░ рд╕рд▓рд╛рд╣ рдпрд╣ рд╣реЛрдЧреА рдХрд┐ https://dom.spec.whatwg.org/ рдХрд╛ рдЕрд╡рд▓реЛрдХрди

рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?

@kresli рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдХреБрдЫ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореИрдВ рдереЛрдбрд╝рд╛ рд╕реАрдЦрддрд╛ рд╣реВрдВ, рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдорд╛рдорд▓рд╛ рдореИрдВ рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВред

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ jsdom рдХреИрд╕реЗ рд╕рдВрд░рдЪрд┐рдд рд╣реИ рдФрд░ webidl рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ (рдФрд░ jsdom рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)

рдХреНрдпрд╛ MutationObserver: https://dxr.mozilla.org/mozilla-central/source/dom/webidl/MutationObserver.webidl~~~ рдкрд░ рдЗрд╕ рд╡реЗрдм рд╕реЗ рдкреНрд░рд╕реНрдерд╛рди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛?

рдореИрдВ рдЗрд╕реЗ рдЕрдм рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рд╕рдордЭрддрд╛ рд╣реВрдВ - рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: https://dom.spec.whatwg.org/#interface -mutationobserver - рд╕рд╣реА?

@henrikkorsgaard рд╕рд╣реА! рдЗрд╕реЗ jsdom рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреБрдЫ рдЪреАрдЬреЛрдВ рд╕реЗ рд╢реБрд░реБрдЖрдд рдХрд░рдиреА рд╣реЛрдЧреА:

  • рдЙрдкрдпреБрдХреНрдд MutationObserver.idl рдХреЛ https://github.com/tmpvar/jsdom/tree/master/lib/jsdom/living/nodes рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
  • рдЙрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ MutationObserver-impl.js рдлрд╝рд╛рдЗрд▓ рднреА рдЬреЛрдбрд╝реЗрдВред рдпрд╣реАрдВ рдкрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдХрд╛рд░реНрдп рдЪрд▓рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпреБрдХреНрддрд┐ рдХрд╣рддреА рд╣реИ "рдкреНрд░рддреНрдпреЗрдХ MutationObserver рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдпреЗ рд╕рдВрдмрджреНрдз рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдБ рд╣реИрдВред" рд╡реЗ рд╢рд╛рдпрдж impl (= рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди) рд╡рд░реНрдЧ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдЪрд░ рд╣реЛрдВрдЧреЗред

рдлрд┐рд░ рдЖрдкрдХреЛ рдЗрдореНрдкреНрд▓рд╛рдВрдЯ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдирд┐рд░реАрдХреНрд╖рдг, рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ, рдФрд░ рдЯреЗрдХ рд░рд┐рдХреЙрд░реНрдбреНрд╕ рд╡рд┐рдзрд┐рдпреЛрдВ, рд╕рд╛рде рд╣реА рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдЖрдкрдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рдпреБрдХреНрддрд┐ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред ( @ рд╕реЗрдмрдорд╛рд╕реНрдЯрд░ , рдХреНрдпрд╛ рдЖрдк рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ?)

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреИрд░реЗрдХреНрдЯрд░рдбреЗрдЯрд╛ рдЬреИрд╕реА рд╕рд░рд▓ рдЪреАрдЬрд╝реЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЖрдкрдХреЗ рдмрд╣реБрдд рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп jsdom impl рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпреБрдХреНрддрд┐ рдХрд╣рддреА рд╣реИ "рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХреЛрдВ рдХреА рдПрдХ рд╕рдВрдмрджреНрдз рд╕реВрдЪреА рд╣реЛрддреА рд╣реИред" рдЗрд╕рдХреЗ рд▓рд┐рдП Node impl рдореЗрдВ рдПрдХ рдЖрд╡реГрддреНрддрд┐ рдЪрд░ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдпреБрдХреНрддрд┐ рдпрд╣ рднреА рдХрд╣рддреА рд╣реИ "рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╛рди-рдореВрд▓ рдмреНрд░рд╛рдЙрдЬрд╝рд┐рдВрдЧ рд╕рдВрджрд░реНрднреЛрдВ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдЗрдХрд╛рдИ рдореЗрдВ рдПрдХ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдпреМрдЧрд┐рдХ рдорд╛рдЗрдХреНрд░реЛрдЯрд╛рд╕реНрдХ рдХрддрд╛рд░рдмрджреНрдз рдзреНрд╡рдЬ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдЕрд╕реНрдерд┐рд░ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ MutationObserver рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдПрдХ рд╕рдВрдмрджреНрдз рд╕реВрдЪреА рд╣реЛрддреА рд╣реИ, рдЬреЛ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдЦрд╛рд▓реА рд╣реЛрддреА рд╣реИред" рдпрд╣ рдереЛрдбрд╝рд╛ рдкреЗрдЪреАрджрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ "рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╛рди-рдореВрд▓ рдмреНрд░рд╛рдЙрдЬрд╝рд┐рдВрдЧ рд╕рдВрджрд░реНрднреЛрдВ рдХреА рдЗрдХрд╛рдИ" jsdom рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рдХреНрдпрд╛ рдХрд░реВрдБрдЧрд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдкрд░ рдбрд╛рд▓рдХрд░ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИред рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрднреА рддрдХ IDL рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк Window.js рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЕрдВрдбрд░рд╕реНрдХреЛрд░-рдкреНрд░реАрдлрд┐рдХреНрд╕реНрдб рдкреНрд░реЙрдкрд░реНрдЯреА рдЬреЛрдбрд╝реЗрдВрдЧреЗред рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЪреАрдЬреЗрдВ рдХрдИ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЯреНрд░реИрдХ рдХреА рдЬрд╛рддреА рд╣реИрдВ (рдпрд╛рдиреА рдЖрдИрдлреНрд░реЗрдо рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦреЗрдВ)ред рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП рдЗрдиреНрд╣реЗрдВ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛ рдПрдХ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рд╣реИред

рдЕрдВрдд рдореЗрдВ, "рдПрдХ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рд░рд┐рдХреЙрд░реНрдб рдХрддрд╛рд░" рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╕реНрдерд╛рди рдвреВрдВрдврдХрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдк https://dom.spec.whatwg.org/#queue -a-mutation-record рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ "рдХреНрдпреВ рдП рдореНрдпреВрдЯреЗрд╢рди рд░рд┐рдХреЙрд░реНрдб" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЙрд╕ рд╕реНрдкреЗрд╕ рдореЗрдВ рд╕рднреА рдЬрдЧрд╣реЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдереЛрдбрд╝рд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ jsdom рдореЗрдВ рд╕рднреА рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдХреЗ рд╣реБрдХ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рдЪреАрдЬреЗрдВ рд╣реЛрддреА рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, jsdom рдХреЗ _attrModified, _descendantRemoved, рдФрд░ _descendantAdded рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред https://github.com/tmpvar/jsdom/blob/master/lib/jsdom/living/attributes.js рдореЗрдВ рднреА "TODO рдореНрдпреВрдЯреЗрд╢рди рдСрдмреНрдЬрд░реНрд╡рд░ рд╕реНрдЯрдл" рд╣реИред

рдЙрдореНрдореАрдж рд╣реИ рдХреА рд╡реЛ рдорджрдж рдХрд░рджреЗ!

рдорд╣рд╛рди :)

рдлрд┐рд░ рд╕реЗ, рдореИрдВ webidl рдФрд░ рдмрдбрд╝реЗ рдХреЛрдбрдмреЗрд╕ рдХреЗ рд╕рд╛рде рд╕реБрдкрд░ рдЕрдиреБрднрд╡реА рдирд╣реАрдВ рд╣реВрдВред рдореИрдВ рдХреБрдЫ рд╕рдордп рд╕реАрдорд╛ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рд╕рд╛ рдЭреБрдХрд╛ рд╣реБрдЖ рд╣реВрдВ;)

рдореИрдВ рдЕрдкрдирд╛ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдкреНрд░рджрд░реНрд╢рди рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЕрдЧрд▓реЗ рдХреБрдЫ рд╣рдлреНрддреЛрдВ рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдПрдХ рдпрд╛ рджреЛ рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рднреА рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

рдареАрдХ,

рдореБрдЭреЗ idl рдФрд░ Impl рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдм рддрдХ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ window.js рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдЕрдм рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рд╡рд┐рдВрдбреЛ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде new MutationObserver() рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

const window = jsdom("<html><body><div id='mutation'></div></body></html>").defaultView;

let observer = new window.MutationObserver(function(mutations){
      console.log(mutations);
});

рдХреНрдпрд╛ рдореБрдЭреЗ рдпрд╣рд╛рдВ рдХреБрдЫ рдЪрд╛рд▓рдмрд╛рдЬреА рдпрд╛рдж рдЖ рд░рд╣реА рд╣реИ рдпрд╛ рдХрд╣реАрдВ рдХрд╣реАрдВ рдореБрдЭреЗ MutationObserver рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд╕реНрддреБ рдХреЗ рд░реВрдк рдореЗрдВ рдмреЗрдирдХрд╛рдм рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЗрд╕реЗ рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдХреЙрд▓ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

рдореИрдВрдиреЗ Window.js . рдореЗрдВ рдирд┐рдореНрди рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реА рд╣реИ

const MutationObserver = require("../living/generated/MutationObserver");

рдпрд╣ рд╕рдм рдкреВрдЫрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред рдореИрдВ рдмрд╕ рдХреБрдЫ рдкреНрд░рд╡реЗрд╢-рдмрд┐рдВрджреБ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдореИрдВ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░ рд╕рдХреВрдВ рдФрд░ jsdom рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░/рдкреИрдЯрд░реНрди рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд╕рдХреВрдВред

рдЖрд╣, рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рд╡рд╣ рд╣рд┐рд╕реНрд╕рд╛ рднреВрд▓ рдЧрдпрд╛ред рдЖрдкрдХреЛ https://github.com/tmpvar/jsdom/blob/28f00b30236d540df1777ca6c2c0ee9e5e19fe5b/lib/jsdom/living/index.js#L28 рдЬреИрд╕реА рд▓рд╛рдЗрди рдЬреЛрдбрд╝рдиреА рд╣реЛрдЧреА

рдореЗрд░реЗ рдкрд╛рд╕ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдХрд╛рд░реНрдп рдХреЛ @domenic рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛ ( рд╡реЗрдмрдХрд┐рдЯ рдПрдХ рд╕рдорд░реНрдкрд┐рдд рдереНрд░реЗрдб/рдХрддрд╛рд░ рдореЗрдВ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рд░рд┐рдХреЙрд░реНрдб рдЬреЛрдбрд╝рддрд╛ рд╣реИ )ред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрддрд╛рд░рдмрджреНрдз рдФрд░ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдХреБрдЫ рддрд░реНрдХ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреЛ рдХрддрд╛рд░ рдореЗрдВ рдореМрдЬреВрдж рдЪреАрдЬрд╝реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдореБрдЭреЗ рджреЛ рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ:

рдХреНрдпрд╛ jsdom рдореЗрдВ рдХреЛрдИ рдЕрдиреНрдп рдШрдЯрдХ рд╣реИ рдЬреЛ рдРрд╕реА рдХрддрд╛рд░ рд╕реЗ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдХреНрдпрд╛ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдФрд░ (рднрд╡рд┐рд╖реНрдп) рдПрдХреАрдХрд░рдг рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдореБрдЭреЗ рдпрд╣рд╛рдВ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдХреНрдпрд╛ рдЯрд╛рдЗрдорд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрддрд╛рд░ рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЪрддреБрд░ рд╣реЛрдЧрд╛ (рдХреНрдпрд╛ jsdom рдореЗрдВ рдХреЛрдИ рд╡реИрд╢реНрд╡рд┐рдХ рдЯрд┐рдХ рд╣реИ?) рдпрд╛ рд╕рд┐рд░реНрдл рд╡рд╛рджреЗ/рдкреВрд░реНрдг рдХреЙрд▓рдмреИрдХ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░?

рдореИрдВ рдмрд╣реБрдд рд╣реА рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдкрдХ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдХреЛ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВред

рддреЛ, рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдЯрд╛рд╕реНрдХ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рд┐рд░реНрдл process.nextTick(fn) ред рдпрд╣ рдХрдВрдкрд╛рдЙрдВрдб рдорд╛рдЗрдХреНрд░реЛрдЯрд╛рд╕реНрдХ рд╡реНрдпрд╡рд╕рд╛рдп рдФрд░ "рдПрдХ рдХрдВрдкрд╛рдЙрдВрдб рдорд╛рдЗрдХреНрд░реЛрдЯрд╛рд╕реНрдХ рд╕рдмрдЯрд╛рд╕реНрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ" рдХреЗ рдХрд╛рд░рдг рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдкреЗрдЪреАрджрд╛ рд╣реИред рдореИрдВ _рдерд┐рдВрдХ_ рдЖрдк рдЬреНрдпрд╛рджрд╛рддрд░ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; jsdom рдХреЛ рдЕрдкрдиреЗ рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХреА рдЬрд╛ рд░рд╣реА рд╕рд╛рдордЧреНрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рддреЛ: рдЬрдм рдпреБрдХреНрддрд┐ рдХрд╣рддреА рд╣реИ "рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХреЛрдВ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдпреМрдЧрд┐рдХ рдорд╛рдЗрдХреНрд░реЛрдЯрд╛рд╕реНрдХ рдХреЛ рдХрддрд╛рд░рдмрджреНрдз рдХрд░реЗрдВ", рддреЛ рдЖрдк process.nextTick(notifyMutationObservers) ред рдлрд┐рд░, рдЕрдВрджрд░ notifyMutationObservers , рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЪрд░рдг 3 рдХреЗрд╡рд▓ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХреЛрдВ рдкрд░ рдПрдХ рд▓реВрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╕рдмрд╕реНрдЯреЗрдкреНрд╕ рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИред

рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП, https://github.com/tmpvar/jsdom/blob/master/Contributing.md рдХреЛ рдЕрд╡рд╢реНрдп

рдпрд╣ рдкреВрдЫрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдХреБрдЫ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд░рд╣реА рд╣реИ рдХрд┐ рд╡реЗрдмрд┐рдбрд▓ рд╕реНрдХреАрдо рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ (рдЬреИрд╕реЗ /рдЬреЗрдирд░реЗрдЯреЗрдб/рдореНрдпреВрдЯреЗрд╢рдирд░рд┐рдХреЙрд░реНрдб.рдЬреЗрдПрд╕) рдХреЛ рдЗрдореНрдкреНрд▓рд╛рдВрдЯ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдмреАрдЪ рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рдХреИрд╕реЗ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдП (рдиреЛрдб-рдЗрдореНрдкреНрд▓ -> рдореНрдпреВрдЯреЗрд╢рди рдСрдмреНрдЬрд░реНрд╡рд░-рдЗрдореНрдкреНрд▓) .

рдореИрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд╢реБрджреНрдз JSON рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдиреЗ рдХрд╛ рд▓реБрддреНрдл рдЙрдард╛ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ MutationRecords рдХреА рд╕реНрдХреАрдорд╛ рдХреЛ рджрд░реНрдкрдг рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдиреЗ рдкрд░ рдмрд╕ рдЗрд╕реЗ рдиреЛрдб-рдЗрдореНрдкреНрд▓рд╛ рд╕реЗ MutationObserver рддрдХ рдкрд╛рд╕ рдХрд░ рджреЗрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рд╡рд░реНрдгрд┐рдд MutationObservers рдХреЗ рд╕рднреА рдкрд╣рд▓реБрдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдорд╣рддреНрд╡рд╛рдХрд╛рдВрдХреНрд╖рд╛ рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛ред

рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ jsdom webidl рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░/рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓/рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВред рдХреЛрдб рдХреЗ рднреАрддрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдореБрдЭреЗ рдЗрдореНрдкреНрд▓рд╛ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ/рдЬреЗрдирд░реЗрдЯреЗрдб/рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рднреА рдорджрдж рдХрд░реЗрдЧрд╛ред

рд╣рдореЗрдВ рд╢рд╛рдпрдж рдЗрд╕реЗ рдХрд╣реАрдВ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдЬрд╛рддрд╛ рд╣реИ:

рдЖрдо рддреМрд░ рдкрд░, рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рддрд░реНрдХ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдирдмреЙрдХреНрд╕/рд░реАрдмреЙрдХреНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рд╡рд╕реНрддреБрдУрдВ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдХреЗрд╡рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд╕реНрддреБрдПрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред рд╕рд┐рд╡рд╛рдп - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВред рдпрд╣ рдорд╛рдорд▓рд╛ рд╣реЛрдЧрд╛, рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ _everything_ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдИрдбреАрдПрд▓-рдЖрдзрд╛рд░рд┐рдд рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдХрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рддрд░реНрдХ рдФрд░ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдПрдХ рдЧреИрд░-рдЖрдИрдбреАрдПрд▓ рд╡рд░реНрдЧ (рдЬреИрд╕реЗ рд╡рд┐рдВрдбреЛ) рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрдирдмреЙрдХреНрд╕рд┐рдВрдЧ/рд░реАрдмреЙрдХреНрд╕рд┐рдВрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрдм рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдпрдВ рдХреЛрдИ рддрд░реНрдХ рдкреНрд░рджрд╛рди рдХрд░реЗрдВрдЧреЗ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ https://github. com/tmpvar/jsdom/blob/master/lib/jsdom/living/events/EventTarget-impl.js#L103 , рдЬрд╣рд╛рдВ рд╣рдореЗрдВ рдПрдХ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓рдиреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдВрдбреЛ рдЕрднреА рдирд┐рд╖реНрдХреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди EventTarget (рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рд╡рд┐рдВрдбреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рддреА рд╣реИ) рдЗрд╕рд╕реЗ рдпрд╣)ред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЖрдк рдЗрд╕ рдореИрдиреБрдЕрд▓ рдмреЙрдХреНрд╕рд┐рдВрдЧ рдХреЛ idlUtils.wrapperForImpl / idlUtils.implForWrapper ред

рддреЛ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдк рдПрдХ рдЗрдореНрдкрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдирд┐рд░реНрдпрд╛рдд рдкрд░ createImpl рдкрд░ рдХреЙрд▓ рдХрд░реЗрдВред рдпрд╣ рддрд░реНрдХреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА (рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ-рдирд┐рд░реНрдорд╛рддрд╛ рддрд░реНрдХреЛрдВ рдХреЗ рд▓рд┐рдП) рдФрд░ рдирд┐рдЬреА рддрд░реНрдХреЛрдВ рдХреА рдПрдХ рд╡рд╕реНрддреБ рд▓реЗрдЧрд╛ (рдЙрди рджреЛрдиреЛрдВ рдХреЛ impl рд╡рд░реНрдЧ рдХреЛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП https://github.com/tmpvar/jsdom/blob/9dd9069354e36c077032f4cbcb1616a7d9e6f0c4/lib/jsdom/living/nodes/Document-impl.js#L549 рджреЗрдЦреЗрдВред

рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реИ рдХрд┐ рдпрд╣ рд▓рдЧрднрдЧ рдкреВрд░реА рдмрд╛рдд рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ), рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреБрдЫ рдФрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ рддреЛ рдореБрдЭреЗ рдФрд░ рд╕рдордЭрд╛рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

рдзрдиреНрдпрд╡рд╛рдж @Sebmaster , рдЗрд╕рд╕реЗ рдмрд╣реБрдд рдорджрдж рдорд┐рд▓реАред

рд╣рд╛рдВ, рдПрдкреАрдЖрдИ/рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдХреИрд╕реЗ рдПрдХреАрдХреГрдд рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕ рдкрд░ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХрд░рдирд╛ рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЕрдЧрд▓реЗ рдХреБрдЫ рдЪрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рд╣реИред

рд╢реАрдШреНрд░ рдирд╡реАрдиреАрдХрд░рдг!
рдпрджрд┐ MutationRecord рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ) W3C рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдореИрдВрдиреЗ рдЙрдирдХреЗ рднрдВрдбрд╛рд░ рдореЗрдВ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдХреА рд╣реИред

рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░реВрдВрдЧрд╛ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЗрдиреНрд╣реЗрдВ W3C/jsdom рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░реВрдВрдЧрд╛ред рдпрд╛рдиреА рдЬрдм рддрдХ рдореЗрд░реЗ рдкрд╛рд╕ рдЙрд╕ рдХрд╛рдо рдХреЛ рднреА рдкреВрд░рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рди рд╣реЛред

рд▓реЗрдХрд┐рди рд╡рд┐рд╢реЗрд╖рддрд╛ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдЕрдм рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдореИрдВ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдХреЗ рджреМрд░рд╛рди рдпрд╛ рдЕрдЧрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХрд░реВрдВрдЧрд╛ред

рдпрд╣ рдЕрддрд┐-рд░реЛрдорд╛рдВрдЪрдХ рд╣реИ! рдХреНрдпрд╛ рдЖрдк рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдорд╛рдорд▓рд╛ рдХреНрдпрд╛ рд╣реИ? рдореИрдВ https://github.com/w3c/web-platform-tests/issues/2482 рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдлреА рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж: MutationRecord рдХрд╛ рд╕рдВрдкрддреНрддрд┐ рдореВрд▓реНрдп рдХреНрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд▓реНрдкрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ?

рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рд░рд┐рдХреЙрд░реНрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рддреЛ рдкрд╣рд▓реЗ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЖрдИрдбреА рдорд╛рди рдмрджрд▓ рджреЗрдЧрд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд▓реМрдЯрд╛рдП рдЧрдП рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ рдкреБрд░рд╛рдиреА рдорд╛рди рд╕рдВрдкрддреНрддрд┐ рд╣реЛрдЧреАред OldValue рдЧреБрдг рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡рд╕реНрддреБ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ рдПрдХ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ рд╣рдореЗрд╢рд╛ рд╕рднреА рдЧреБрдг рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рднрд▓реЗ рд╣реА рд╡реЗ рд╢реВрдиреНрдп рд╣реЛрдВред рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ DOMString рдЕрд╢рдХреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрдм рдЯреЗрд╕реНрдЯрдХреЗрд╕ рдореЗрдВ рдЧреБрдг рд╕реЗрдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдкрд░реАрдХреНрд╖рдг рдирд▓ (рдЯрд╛рдЗрдкрдСрдлрд╝ рдСрдмреНрдЬреЗрдХреНрдЯ) рдХреА рддреБрд▓рдирд╛ рдирд▓ (рдЯрд╛рдЗрдкрдСрдлрд╝ рд╕реНрдЯреНрд░рд┐рдВрдЧ) рд╕реЗ рдХрд░ рджреЗрдЧрд╛ рдФрд░ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдкрд░реАрдХреНрд╖рдг рдЖрд▓рд╕реА рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдлрд╝реАрд▓реНрдб рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╢реВрдиреНрдп (рдСрдмреНрдЬреЗрдХреНрдЯ) рдкрд░ рд╕реЗрдЯ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ рдЬрдм рдХ) рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рд░рд┐рдХреЙрд░реНрдб рдПрдХ рдРрд╕реА рд╕рдВрдкрддреНрддрд┐ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬреЛ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░рд┐рдХреЙрд░реНрдб рдСрдмреНрдЬреЗрдХреНрдЯ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдирд╛ рд╡реИрд▓реНрдпреВ) рдореЗрдВ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ рдФрд░ рдмреА) рдЬрдм рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рд░рд┐рдХреЙрд░реНрдб рд╕рдВрдкрддреНрддрд┐ рдбреЛрдорд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд▓ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдорд╕реНрдерд╛рди) рд╣реИред

рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ?

рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рд╣реВрдВ рддреЛ рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рд╕рднреА рдорд╛рдорд▓реЛрдВ рдХреЛ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдмрд╛рд╣рд░реА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ jsdom рдФрд░ w3c рдкрд░реАрдХреНрд╖рдг рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдХрдард┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ :)

рдореБрдЭреЗ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдХреНрдпрд╛ рдЖрдк рд╕рд░рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВ рдлреЙрд░реНрдо рдореЗрдВ рдПрдХ рдЙрддреНрддрд░ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛: рдкрд░реАрдХреНрд╖рдг рдкреБрд░рд╛рдиреЗ рд╡реИрд▓реНрдпреВ рдХреЛ рд╢реВрдиреНрдп рдпрд╛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд▓реНрдкрдирд╛ "рд╢реВрдиреНрдп" рдорд╛рди рджреЗрддреА рд╣реИред рдпрд╛ рдЗрд╕реА рдХреЗ рд╕рдорд╛рдиред

рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдкрд░реАрдХреНрд╖рдг рдкрд░реЛрдХреНрд╖ рд░реВрдк рд╕реЗ рдкреБрд░рд╛рдиреЗ рд╡реИрд▓реНрдпреВ рдХреЗ рд╢реВрдиреНрдп рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред рдпрд╣ "рдПрди" рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдорд╕реНрдерд╛рди рд╢реВрдиреНрдп (рдСрдмреНрдЬреЗрдХреНрдЯ) рд╣реЛрдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдиреБрд╕рд╛рд░ DOMString рд╢реВрдиреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдорд╕реНрдерд╛рди рдХрд╛ рдкреНрд░рдХрд╛рд░ рдбреЛрдорд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ?, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╢реВрдиреНрдп рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ ("рд╢реВрдиреНрдп" рдирд╣реАрдВ, рдмрд╕ рд╢реВрдиреНрдп)ред

рдкреБрд░рд╛рдиреЗ рд╡реИрд▓реНрдпреВ рдорд╛рдорд▓реЗ рдкрд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж :)ред

рдареАрдХ рд╣реИ, рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж - рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдХрд▓реНрдкрдирд╛ рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд╣рд▓реБрдУрдВ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдХрд╛рдВрдЯреЗ рдореЗрдВ рдПрдХ рд╢рд╛рдЦрд╛

рдореИрдВ рдЙрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХрд╣рд╛рдВ рдХрд░реВрдВ рдЬреЛ рдЬреНрдЮрд╛рдд рдХрд╛рд░рдгреЛрдВ/рдореБрджреНрджреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ (рд░реЗрдВрдЬ рд╕рдкреЛрд░реНрдЯ #317 рдЖрджрд┐ рдЧрд╛рдпрдм рд╣реИ)?

рд╣рдо рдЬреЛ рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рдЙрдиреНрд╣реЗрдВ рд╡реЗрдм-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП index.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде рдЯрд┐рдкреНрдкрдгреА рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпреЛрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ ред

рдХреНрдпрд╛ рдпрд╣ рдЕрдВрддрд┐рдо рд░реВрдк рджрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рджреВрд░ рд╣реИ?

рд▓рдЧрддрд╛ рд╣реИ рдореНрдпреВрдЯреЗрд╢рди рдЗрд╡реЗрдВрдЯреНрд╕ рдХреЛ 8.5 рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред рдХреНрдпрд╛ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ (рдореНрдпреВрдЯреЗрд╢рди рдСрдмреНрдЬрд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ) рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ, рдмрд┐рдирд╛ 8.5 рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдП рдФрд░ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдкрд░ рдирд┐рд░реНрднрд░ рд░рд╣реЗрдВ? DOMParser 8.5 рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдореБрдЭреЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рд╢реИрдбреЛ рдбреЛрдо рдкреЙрд▓реАрдлрд┐рд▓ рдХреЗ рд▓рд┐рдП рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕ рд╕рдордп JSDOM рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдереЛрдбрд╝реЗ рдЕрд╡рд░реБрджреНрдз рд╣реИрдВред рдХреЛрдИ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдпрд╣рд╛рдВ рд╕рд╣рд╛рдпрдХ рд╣реЛрдЧрд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рд╕рдордп рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдФрд░ рдЧреЛрддрд╛ рд▓рдЧрд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рдЕрднреА рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗред

рдореБрдЭреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдХрд┐рд╕реА рднреА рддрд░реАрдХреЗ рд╕реЗ рдЕрд╡рдЧрдд рдирд╣реАрдВ рд╣реИ, рдХреНрд╖рдорд╛ рдХрд░реЗрдВ :(ред

рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рд╕рд╛рде рд▓реЗ рдЬрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдХреБрдЫ рдХрд╛рдо рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: https://github.com/henrikkorsgaard/jsdom/commits/MutationObserver

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕рд╛рде рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рдЕрдВрддрд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ MutationObserver рдореВрд▓ рд░реВрдк рд╕реЗ рд╣рд░ рдЬрдЧрд╣ рд╕рдорд░реНрдерд┐рдд рд╣реИ: http://caniuse.com/#feat =mutationobserver

рдХреНрдпрд╛ рд╣рдо webcomponentsjs polyfill рдХрд╛ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ? https://github.com/webcomponents/webcomponentsjs

рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХрд╛ рд╣рдореЗрд╢рд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред @henrikkorsgaard рдХрд╛ рдХрд╛рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдкреЙрд▓реАрдлрд┐рд▓ рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

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

рдЕрдЧрд░ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ; рдореИрдВрдиреЗ рдкреЙрд▓реА-рдлрд┐рд▓реНрдб рдПрдордУ рдСрди-рдЯреЙрдк jsdom; рдпрд╣рд╛рдБ рдФрд░ рдпрд╣рд╛рдБ ред рдореИрдВ рдЗрд╕реЗ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрд┐рдирд╛ рдЯрд╛рдЗрдорд░ рдХреЗ рднреАред

4 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдФрд░ рдЕрднреА рднреА рдкреНрд░рдЧрддрд┐ рдкрд░ рд╣реИ? рд╕рдВрд╕реНрдХрд░рдг 9.0.0 рдХреЗ рдмрд╛рдж рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдЪреИрдВрдЬ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЦрдмрд░ рд╣реИ?

@MeirionHughes рдлрд╝рд╛рдЗрд▓ рдиреЗ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛, рдзрдиреНрдпрд╡рд╛рдж!

рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?

@domenic рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдмрд╕ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░:
рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдЬрд┐рд╕реЗ @MeirionHughes рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдерд╛, рдЗрд╕рдиреЗ рдЕрдм рддрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред

@mtrabelsi @MeirionHughes рд╣реИрд▓реЛ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдЬреЗрд╕реНрдЯ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд┐рдпрд╛, рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА https://stackoverflow.com/questions/43190171/jsdom-cannot-read-property-location-of-null
рдХреНрдпрд╛ рдЖрдк рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдиреЗ JSDOM рдореЗрдВ MO рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛?

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
рдареАрдХ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ https://gist.github.com/romuleald/1b9272fce11d344e257d0bdfd3a984b0

@romuleald рдЖрдкрдХреЗ рд╕рд╛рд░ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИ, рдЖрдк this.expando рдФрд░ this.counter рд╕реЗрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЗрд╕реЗ рд╕реНрдерд┐рд░ рд░реВрдк рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рд╕реЗ _findMutations рдореЗрдВ рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рд╣реЛрдВрдЧреАред рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЬрд┐рд╕ рдЯрд╛рдЗрдкрдкреНрд░рддрд┐ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдк рдХрдирд╡рд░реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рдереЗ, рджреЛрдиреЛрдВ рдЧреБрдг рд╕реНрдерд┐рд░ рдереЗ (ES6 рдХреЗ рд╕рд╛рде рд╕рдВрднрд╡ рдирд╣реАрдВ)ред рдореИрдВ рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдпреВрдЯрд┐рд▓ рдХреНрд▓рд╛рд╕ рдХреЗ рдиреАрдЪреЗ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ:

Util.counter = 1;
Util.expando = 'mo_id';

рдФрд░ рдлрд┐рд░ рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдХрдХреНрд╖рд╛ рдХреЛ рдХрднреА рднреА рддрддреНрдХрд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╢рд░реНрдордирд╛рдХ рд░реВрдк рд╕реЗ рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдкрд┐рдЫрд▓реЗ рдбреЗрдврд╝ рджрд┐рди рд╕реЗ рдЗрд╕рдХреЗ рдХрд╛рд░рдг рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдбреАрдмрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЬрд┐рд╕ рд╕реНрд░реЛрдд рдкрд░ рдЖрдк рд╢рд┐рдо рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ, рд╡рд╣ CharacterData рдиреЛрдбреНрд╕ рдХреА .data рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдКрдкрд░ рдореЗрд░реА рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП https://github.com/megawac/MutationObserver.js рдкреЙрд▓реАрдлрд┐рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВред

рдореИрдВ рдПрд╡реАрдП рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдФрд░ 'рдПрдо' рдПрдХ рдореЗрд░рд╛ рдореЙрдбреНрдпреВрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ MutationObserver рд╢рд╛рдорд┐рд▓ рд╣реИред

import test from 'ava';
import delay from 'delay';
import jsdom from 'jsdom';
import m from '.';

const dom = new jsdom.JSDOM();
global.window = dom.window;
global.document = dom.window.document;

require('mutationobserver-shim');

global.MutationObserver = window.MutationObserver;

test('MutationObserver test', async t => {
    delay(500).then(() => {
        const el = document.createElement('div');
        el.id = 'late';
        document.body.appendChild(el);
    });

    const checkEl = await m('#late');
    t.is(checkEl.id, 'late');
});

рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рд╣реИ, рдХреБрдЫ рдЪреАрдЬрд╝реЗрдВ рдорд╛рдирдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рднрд┐рдиреНрди рд╣реИрдВред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рдирд╣реАрдВ рд╣реБрдИ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреГрдкрдпрд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦреЗрдВред

Jsdom рдФрд░ jest рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рд╣реИ рд╢рд┐рдо рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рдирд╛ред

npm install mutationobserver-shim

рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕рднреА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░:

const mo = fs.readFileSync(
  path.resolve('node_modules', 'mutationobserver-shim', 'dist', 'mutationobserver.min.js'),
  { encoding: 'utf-8' },
);
const moScript = win.document.createElement('script');
moScript.textContent = mo;

win.document.body.appendChild(moScript);

рдпрд╣ "рд╣реИрдХ" рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╢рд╛рдпрдж рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рднреА;)

IIRC рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдпрд╣ рд╢рд┐рдо рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдореИрдВрдиреЗ рдкрд╛рд▓-рдиреЛрдбрдЬ рд╕реЗ рдХреЛрдб рдХреЗ рдПрдХ рдЯреНрд╡реАрдХ рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдКрдкрд░ npm рдкреИрдХреЗрдЬ рдХрд┐рд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ) рдЬреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрдЕрдкрдлрд╛рдЗрд▓реНрд╕ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ рддреЛ рдореИрдВ рдЕрдкрдиреЗ рджреВрд╕рд░реЗ рд▓реИрдкрдЯреЙрдк рдкрд░ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬрд╛рдирдХрд╛рд░реА рджреЗ рд╕рдХрддрд╛ рд╣реВрдВред

рддреЛ рдпрд╣ рд▓рдЧрднрдЧ 5 рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЦреБрд▓рд╛ рд╣реИ, рдХреЛрдИ рд╕реНрдерд┐рддрд┐ рдЕрдкрдбреЗрдЯ?

@mendrik рдиреЗ рдЗрд╕рдХрд╛ рдордЬрд╛рдХ рдЙрдбрд╝рд╛рддреЗ рд╣реБрдП рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ https://github.com/benitogf/corsarial/blob/master/test/specs/utils.js#L29 рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдкреЙрд▓реАрдлрд┐рд▓ рд╕рдорд╛рдзрд╛рди рднреА рд╣реИ, рдЖрдкрдХрд╛ рджрд┐рди рд╢реБрдн рд╣реЛ :)

рд╣рдорд╛рд░реЗ рдпрд╣рд╛рдВ рдЖрдВрд╢рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ: https://github.com/skatejs/skatejs/blob/master/packages/ssr/register/MutationObserver.jsред

@benitogf рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдореЗрд░реЗ рд▓рд┐рдП рдЖрдЧ рдирд╣реАрдВ рд▓рдЧреЗ :( рдЗрд╕рдиреЗ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ
@treshugart рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? :)

@mendrik рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ, рдЗрд╕реЗ рдЖрдпрд╛рдд рдХрд░реЗрдВ https://github.com/aurelia/pal-nodejs/blob/master/src/polyfills/mutation-observer.ts
рдФрд░ рдЗрд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред рдпрд╣ рдмрд╛рдд рд╣реИ!

@mendrik рдпрджрд┐ рдЖрдк https://github.com/skatejs/skatejs/tree/master/packages/ssr#usageред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЖрдк рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реАрдзреЗ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдирд┐рд░реНрдпрд╛рдд (https://github.com/skatejs/skatejs/blob/master/packages/ssr/register/MutationObserver.js#L109) рдХреЛ рдЕрдкрдиреЗ рд╡реИрд╢реНрд╡рд┐рдХ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдХреНрд╡рд┐рд▓ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдШрдЯрдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдерд╛:

import 'mutationobserver-shim';

document.getSelection = () => null;
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

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

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

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

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

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

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