IE <8 рд╕рд╣рд┐рдд рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП DOM-shim

рд╢реБрдн рджрд┐рди рдкреНрд░рд┐рдп рд╣рд░рдЬрд┐рддреЗрд▓реАред

рдХрдИ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреБрдЫ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдХреБрдЫ рдЕрд╕рдорд░реНрдерд┐рдд DOM JS API рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдЖрдП рд╣реИрдВ (рд╣рдо рдЙрдВрдЧрд▓реА рд╕реЗ рдЗрдВрдЧрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ)ред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХрдИ рд▓реЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдЧрддрддрд╛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрджреНрднреБрдд es5-shim рдФрд░ DOM-shim рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рдФрд░ DOM-shim DOM4 рд╕реНрддрд░ рдкрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ "рдЦреАрдВрдЪрддрд╛" рднреА рд╣реИред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ IE6 рдФрд░ IE7 рдореЗрдВ DOM-shim рдХреИрд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЗрди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЛ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рднреБрд▓рд╛ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

рд╕рдорд╕реНрдпрд╛


рдХреБрдЫ рдмрддрд╛рдиреЗ рдХреЛ рдирд╣реАрдВ рд╣реИред рд╕рдВрд╕реНрдХрд░рдг 9 рд╕реЗ рдкрд╣рд▓реЗ IE рдорд╛рдирдХ DOM API рдХрд╛ рдмрд╣реБрдд рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:

рдФрд░ рдпрджрд┐ IE8 рдХреЛ DOM-shim рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ "рдХрдбрд╝рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ", рддреЛ IE6 рдФрд░ IE7, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп (11.24.2011 рдХреЗ рдореБрджреНрджреЛрдВ / 29 рдХреЗ рдЕрдиреБрд╕рд╛рд░ ) рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ IE 8 рдореЗрдВ рдиреЛрдб рдирд╣реАрдВ рд╣реИред рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдкред

рдирд┐рд░реНрдгрдп


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдорд╛рдзрд╛рди рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рд╣реИ рдФрд░ рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдерд╛, рдЬрдм рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ - рд╡реНрдпрд╡рд╣рд╛рд░: url (.htc) [ DHTML рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдкрд░рд┐рдЪрдп ] рдХрд╛ рдЕрдзреНрдпрдпрди рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореБрдЭреЗ рдЗрд╕ рдирд┐рд░реНрдгрдп рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдкрдбрд╝рд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреГрд╖реНрда рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдзреАрдорд╛ рдХрд░ рджрд┐рдпрд╛ рдерд╛ - рдкреГрд╖реНрда рдХреЛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЫреЛрдЯреЗ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ 30 рд╕реЗрдХрдВрдб рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
рдХреБрдЫ рд╕рдордп рдмрд╛рдж, рдореИрдВ рдЧрд▓рддреА рд╕реЗ рд╣рд░ 100 рдмрд╛рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рдкреГрд╖реНрда рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкрд░ рдареЛрдХрд░ рдЦрд╛рдИ - рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдмрд╕ рд╣рд▓реНрдХреЗ = рд╕рдЪреНрдЪреЗ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рддреЗрдЬрд╝реА рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдЕрдм IE <8 рдХреЗ рд▓рд┐рдП DOM-shim рдмрдирд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЬреЛ рдореИрдВрдиреЗ рдХрд┐рдпрд╛ред

рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдореВрд▓ es5-shim рдФрд░ DOM-shim рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ , рдЙрдиреНрд╣реЗрдВ рд▓реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рдХрд░реЗрдВ, рдмрдЧреНрд╕ рдХреЛ рдареАрдХ рдХрд░реЗрдВ рдФрд░ Object.defineProperty рдХреЗ рдЕрдиреБрдХрд░рдг рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдВ:
<...> if (!object.__defineGetter__) { if(descriptor["ielt8"]) { object["get" + property] = descriptor["get"]; object["set" + property] = descriptor["set"]; } else throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED); <...> 

рдХреЗрд╡рд▓ рдПрдХ рдЕрдкрд╡рд╛рдж ERR_ACCESSORS_NOT_SUPPORTED рдХреЛ рдлреЗрдВрдХрдиреЗ рдХреЗ рдмрдЬрд╛рдп , рд╣рдо рдПрдХ рд╡рд┐рд╢реЗрд╖ рдзреНрд╡рдЬ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рд╡рд┐рд╢реЗрд╖ рдирд╛рдореЛрдВ рдХреЗ рддрд╣рдд рдЧреЗрдЯреНрдЯрд░ рдФрд░ рд╕реЗрдЯрд░ рдХреЛ рд╕рд╣реЗрдЬреЗрдВред
рдХреНрдпреЛрдВрдХрд┐ IE рдореЗрдВ <8 рдХреЛрдИ Node.prototype (рдЬреЛ рдХрд┐ Object.defineProperty рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдирд╣реАрдВ рд╣реИ, рдПрдХ рд╡рд┐рд╢реЗрд╖ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реЗ рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░ рдЬрдорд╛ рд╣реЛрдВрдЧреЗ:
 var elementProto = window.HTMLElement && window.HTMLElement.prototype || /*ie8*/window.Element && window.Element.prototype || /*ielt8*/(window["_ielt8_Element_proto"] = {}); 

рд╣рдо рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдХреЗрд╡рд▓ рд╡рд┐рд╡рд░рдг рдореЗрдВ "ielt8" рдзреНрд╡рдЬ рдЬреЛрдбрд╝реЗрдВ:
 Object.defineProperty(elementProto, "classList", {"get" : ..., "ielt8" : true} 

рдЕрдм рд╣рдо рдЕрдкрдиреЗ рд╢рд┐рдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рднреА рдЧреЗрдЯрд░реНрд╕ рдХреЛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬрдорд╛ рдХрд░рддреЗ рд╣реИрдВред рдЬреЛ рдХреБрдЫ рдмрдЪрддрд╛ рд╣реИ, рд╡рд╣ рдкреГрд╖реНрда рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдкрд░ "рд▓рдЯрдХрд╛" рд╣реИред
Dom-shim.ielt8.htc рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:
 <PUBLIC:COMPONENT lightWeight="true"> <PUBLIC:PROPERTY NAME="classList" GET="getClassList" /> <SCRIPT> getClassList = window._ielt8_Element_proto.getclassList </SCRIPT> </PUBLIC:COMPONENT> 

рдФрд░ рдЗрд╕реЗ рдкреГрд╖реНрда рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
 * { behavior: url(dom-shim.ielt8.htc) } 

рдФрд░ рдмрд╕ рдЗрддрдирд╛ рд╣реАред рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ IE6 рдореЗрдВ рднреА Node.classList рд╣реИ!

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреБрдгреЛрдВ рдХреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ:

рдЫреЛрдЯреА рдЪреАрдЬреЗрдВ

1. рдореИрдВ рд╕рд╣реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдореИрдВ htc рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдореВрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╕рд╣реЗрдЬрддрд╛ рд╣реВрдБ:
 if(!this._)this._={}; //Save original attributes property this._.__ielt8_attributes__=this.attributes; 

рддреЛ, IE6 рдореЗрдВ, рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди IE7 рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ: IE7 рдореЗрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдореВрд▓ рдЧреБрдг рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ <PUBLIC:PROPERTY NAME="attributes" GET="getAttributes" /> рдореЗрдВ рдкреБрдирдГ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди IE6 рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ - getAttributes getter рдХреЛ рддреБрд░рдВрдд рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, IE6 рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХ рдЕрд▓рдЧ рдлрд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВред

2. рд╕рднреА рддрддреНрд╡реЛрдВ ("*") рдХреЗ рдмрд╛рдж рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рдВрд▓рдЧреНрди рди рдХрд░реЗрдВ IE <8 рдореЗрдВ, рдпрд╣ рдХреБрдЫ рдЕрд╕рдорд░реНрдерд┐рдд рддрддреНрд╡ рдкрд░ рд▓рдЯрдХрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрдЯрд╛рдЗрд▓ рдореЗрдВ рд╕рднреА HTML рдЯреИрдЧреНрд╕ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
 <style> html,body,div,span,object,iframe,h1,<... html ...>,textarea,input,select { behavior: url(dom-shim.ielt8.htc) } </style> 


рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░


рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рд▓рд┐рдВрдХ: github.com/termi/ES5-DOM-SHIM
рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ DOM-shim рдХреЗ рд▓рд┐рдП рдореЗрд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА DOM-shim рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдкрд┐рдЫрд▓реЗ 8 рдорд╣реАрдиреЛрдВ рд╕реЗ DOM-shim (рдФрд░ github :) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдЬрд╛рдиреЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред)

рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: github.com/termi/Microdata-JS (рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдЬрд╛рдПрдВ / microdataTemplater, templaterTest.html рдЦреЛрд▓реЗрдВ)
DOM-shim рдореЗрдВ рдХреНрдпрд╛ рд╣реБрдЖ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡: github.com/Raynos/DOM-shim/issues/29

рдЕрдкрдбреЗрдЯ 11.27.2011:

рдкреНрд░рддрд┐рдмрдВрдз


.htc рдлрд╛рдЗрд▓реЗрдВ .html рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рдорд╛рди рдбреЛрдореЗрди рдкрд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, example.org/index.html рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП, .htc рдлрд╝рд╛рдЗрд▓ example.org рдкрд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ test.example.org/index.html рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП test.example.org рдкрд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдкреНрд░рддрд┐рдмрдВрдз рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рдХрд░рддрд╛ рд╣реИ - рдЖрдк рдХреЗрд╡рд▓ .htc рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдХ рд╕реНрдереИрддрд┐рдХ рд╕рд░реНрд╡рд░ рдкрд░ рдирд╣реАрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рд╛рдЗрдЯ рдХреЗ рд╕рдорд╛рди рдбреЛрдореЗрди рдкрд░ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ .htc рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реИрдВред
рд╕рдорд╛рди-рдбреЛрдореЗрди рд╕реАрдорд╛
рдЕрдкрдбреЗрдЯ 12.19.2011:
Nginx рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдорд╛рди-рдбреЛрдореЗрди рд╕реАрдорд╛ рд╕рдорд╛рдзрд╛рди

Source: https://habr.com/ru/post/In133328/


All Articles