рд╣рдо рдХреИрд╕реЗ: iOS рдкрд░ рд╣реЛрд╡рд░ рдЬреАрддреЗ ...

рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЯрдЪ рдбрд┐рд╡рд╛рдЗрд╕ рдорд╛рдЙрд╕ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдереЛрдбрд╝реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд╡реЗ рдбреЗрд╕реНрдХрдЯреЙрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ ...

рдореЗрд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╣рдбрд╝рддрд╛рд▓реА рдЙрджрд╛рд╣рд░рдг рдЫрджреНрдо рд╡рд░реНрдЧ рд╕рдВрднрд╛рд▓ рд░рд╣рд╛ рд╣реИ :hover ред рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, iOS7, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣реЛрд╡рд░ рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдХреНрд▓рд┐рдХ рдЗрд╡реЗрдВрдЯ рддрддреНрд╡ рдпрд╛ рдЙрд╕рдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ рдЬреБрдбрд╝рд╛ рди рд╣реЛред рдпрд╣ рдпрд╣рд╛рдБ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИ: jsfiddle.net/H8EmG - рдЪрд╛рд╣реЗ рдЖрдк рдкрд╛рда рдореЗрдВ рдХрд┐рддрдиреА рднреА рдКрдБрдЧрд▓реА рдбрд╛рд▓реЗрдВ - рдЖрдкрдХреЛ рдХреЛрдИ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдирд╣реАрдВ рджрд┐рдЦреЗрдЧрд╛ред рдФрд░ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, jsfiddle.net/H8EmG/1 рдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ рдПрдХ рдЙрдВрдЧрд▓реА рдХреЛ "рдкреЛрдХ" рдХрд░рдиреЗ рд╕реЗ рдЙрд╕рдХреА рдЕрдВрдбрд░рд▓рд╛рдЗрдирд┐рдВрдЧ рд╣реЛ рдЬрд╛рдПрдЧреАред рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рддрдереНрдп - рдЬрдм рддрдХ рд╣рдо рдХрд┐рд╕реА рдЕрдиреНрдп рддрддреНрд╡ рдореЗрдВ рдирд╣реАрдВ рдЭрд╛рдВрдХреЗрдВрдЧреЗ, рддрдм рддрдХ рдкрд╛рда рдПрдХ рд╣реЛрд╡рд░ рдХреЗ рдиреАрдЪреЗ рд░рд╣реЗрдЧрд╛ ...

рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдЙрджрд╛рд╣рд░рдг рдордВрдбрд░рд╛рдиреЗ рд╡рд╛рд▓реЗ рддрддреНрд╡реЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рд░рд╣рд╛ рд╣реИ: jsfiddle.net/ASRm9/1 рдкрд╛рда рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдк рд▓рд╛рдЗрди рдХреЗ рдЕрдВрджрд░ "HOVER!" рдЯреЗрдХреНрд╕реНрдЯ рджреЗрдЦреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рджреВрд╕рд░рд╛ рдкреНрд░реЗрд╕ рдкрд╣рд▓реЗ рд╣реА alert('click') рдЯреНрд░рд┐рдЧрд░ рдХрд░ рджреЗрдЧрд╛ alert('click') ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ iOS рд╕рдордЭрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ :hover рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИ, рдФрд░ рд╕рд╛рдЗрдЯ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рджреНрд╡рд╛рд░рд╛ рдШреБрд╕рдкреИрда рдХрд┐рдП рдЧрдП рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рд╣рдореЗрдВ рдРрд╕реА рдмрдЧ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдЬрд┐рд╕реЗ рд╣рдо рдЕрдм рддрдХ рдирд╣реАрдВ рд╕рдордЭрд╛ рд╕рдХреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП iPad рдкрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рдПрдХ рджрд┐рди рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрд╛ рд╣реИ ... рд╡рд┐рд╡рд░рдг рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдПрдХ рдЪрддреБрд░, рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛, рд╕рдВрднрд╡рддрдГ, рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде: рдордВрдбрд░рд╛рдирд╛ рдПрдХ рдмрд╛рд░ - рдХреГрдкрдпрд╛, рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ ...



SUDDENLY, рдЕрдЧрд▓реЗ рд╕реЗрд╡рд╛ рдЕрджреНрдпрддрди рдХреЗ рдмрд╛рдж, "рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо" рдХрд╛ рдбреЗрд╡рд▓рдкрд░, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдореИрдВ рдПрдХ рдЕрдкреНрд░рд┐рдп рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ - iPad рдкрд░ рдЖрдк рд▓рдЧрднрдЧ рд╕рднреА "рддрд╛рд▓рд┐рдХрд╛рдУрдВ" рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдХрд╛ рдЪрдпрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдЬреЛ рд╕реЗрд╡рд╛ рдкрд░ рд╣реИрдВред "рдХреНрд▓рд┐рдХ" рдмрд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ! рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ "рддрд╛рд▓рд┐рдХрд╛" рдХреЗрд╡рд▓ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдФрд░ рд╕реНрддрдВрдн рдирд╣реАрдВ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдиреЛрдЯреНрд╕, рд╕реЙрд░реНрдЯрд┐рдВрдЧ, рдЧреНрд░реБрдкрд┐рдВрдЧ, рдлрд┐рд▓реНрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ "рд╕рдореГрджреНрдз" рдпреВрдЖрдИ рддрддреНрд╡ рд╣реИ, рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ "рд▓реИрдбрд░" рдореБрджреНрд░рд┐рдд рдФрд░ рдкреАрдбреАрдПрдл рдФрд░ рдПрдХреНрд╕реЗрд▓ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ ...

рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рдВрдмреЗ рдФрд░ рдердХрд╛рдК рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ HTML + CSS рдХрд╛ рдПрдХ рдЕрд▓рдЧ, рд╕рд░рд▓ рдЯреБрдХрдбрд╝рд╛ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рд╛, рдЬрд┐рд╕рдиреЗ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдкрд░рд┐рдгрд╛рдо рджрд┐рдП ...



рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ: jsfiddle.net/822eG/4 ред рддрд╛рд▓рд┐рдХрд╛ рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╣реЛрд╡рд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛ (рдЖрдк "рдЪреЗрдХрдмреЙрдХреНрд╕" рджреЗрдЦреЗрдВрдЧреЗ) рд▓реЗрдХрд┐рди click (рдФрд░ alert ) рдЖрдк рдпрд╣ рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ click рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХреИрд╕реЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░, рдореИрдВрдиреЗ SO SOoveroverflow.com/questions/21786375/ios-7-hover-click-issue-no-click-triggered-in-some-cases рдкрд░ рдПрдХ рдкреЛрд╕реНрдЯ рд╢реБрд░реВ рдХреА, рдЬрд┐рд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдлрд╝рд░ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдмрд╣реБрдд рд▓рд╛рдн рдирд╣реАрдВ рд╣реБрдЖ (рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ) ) -webkit-overflow-scrolling: touch рдЯреЗрдмрд▓реЗрдЯ рдХрдВрдЯреЗрдирд░ рдкрд░ -webkit-overflow-scrolling: touch рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ jsField рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рдЧрдбрд╝рдмрдбрд╝реА рдкрд░ рд╕реЛрдЪрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╛рдзрд╛рди рдЖрдпрд╛ (рдПрд╕рдУ рдкрд░ рд╕рд╡рд╛рд▓ рдХрд╛ рдЕрдкрдирд╛ рдЬрд╡рд╛рдм) - рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ :hover рд╕реАрдПрд╕рдПрд╕ рд╡рд░реНрдЧ :hover рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХреЛрдб рдХреЗ рд╕рд╛рде "рд▓рд┐рдкрдЯреЗ" рд╣реЛрддрд╛ рд╣реИ, mouseenter / mouseleave рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИ? рдпрд╣ рд╕рд░рд▓ рдлрд┐рдХреНрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ "рдордЬрд╝рд╛" рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ - рдХреЛрдИ рдФрд░ рдбрдмрд▓-рдХреНрд▓рд┐рдХрд┐рдВрдЧ рдирд╣реАрдВред рдкрд╣рд▓реЗ рдкреНрд░реЗрд╕ рд╕реЗ рд╣рдореЗрдВ рдЕрд▓рд░реНрдЯ рдФрд░ "рдЪреЗрдХрдмреЙрдХреНрд╕" рджреЛрдиреЛрдВ рдорд┐рд▓рддреЗ рд╣реИрдВ: jsfiddle.net/822eG/10

рдПрдХ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рдХреА рдХрдореА рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ ... рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдХреЛрдб рдЖрдзрд╛рд░ рд╣реИред рдЗрд╕ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдЖрдзрд╛рд░рд┐рдд "рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо" рдХреЛрдб рдФрд░ "рдПрдкреНрд▓рд┐рдХреЗрд╢рди" рдХреЛрдб рджреЛрдиреЛрдВ рдХреА рдПрдХ рдмрд╣реБрдд рдХреБрдЫ рд╣реИред рдФрд░ рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИ, рдХреМрди, рдХрд╣рд╛рдБ рдФрд░ рдХрдм, рдХрд┐рди рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд рд╡рд╣ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ: рдордВрдбрд░рд╛рдирд╛ рдФрд░ рдХреНрдпрд╛ рд╡рд╣ рдХреБрдЫ рдЫрд┐рдкрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдпрд╛ рдХреБрдЫ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдкрдХреЛ "рд╕рдм рдХреБрдЫ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ" рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдФрд╕рдд рдбреЗрд╡рд▓рдкрд░ рдиреЗ iOS рдкрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрд╛ред

рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╛рдзрд╛рди рдерд╛:



рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓ рдирд┐рдХрд▓рд╛ ... рдкреНрд░рддреНрдпреЗрдХ styleSheet рдореЗрдВ rules рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реЛрддрд╛ rules , рдЬрд┐рд╕рдореЗрдВ рд╕реНрд╡рдпрдВ рдирд┐рдпрдо рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдо рдореЗрдВ рдПрдХ selectorText рд╕рдВрдкрддреНрддрд┐ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕реЗ рдЪрд▓рддреЗ рд╕рдордп рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдПрдХ style рд╕рдВрдЧреНрд░рд╣ рднреА рд╣реИ рдЬрд╣рд╛рдВ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕рдореЗрдВ рдЗрд╕ рд╢реИрд▓реА рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧреБрдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ - рдЙрдиреНрд╣реЗрдВ "рд╕рд░рдгреА" рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред style рдореЗрдВ .length , рд▓рдВрдмрд╛рдИ рдХреЛ .length рд╣реБрдП, рд╣рдореЗрдВ рдЗрд╕ рд╢реИрд▓реА рдореЗрдВ рд╕рднреА рдЧреБрдг рдмрджрд▓ рдЬрд╛рддреЗ рд╣реИрдВред рджреВрд╕рд░реЗ, style рдореЗрдВ рдмрджрд▓реЗ рд╣реБрдП рдЧреБрдгреЛрдВ рдХреЗ рдореВрд▓реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо рдХреЗ рдмрд░рд╛рдмрд░ рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдп рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред

рдЕрдЧрд░ рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐, рд╕реАрдПрд╕рдПрд╕ рдХреЛрдб рд╣реИ:

 .myClass:hover .block, .myItem:hover .element { color: red; display: block; } 


рдЙрд╕рдХреЗ рдмрд╛рдж рдЗрд╕ рдирд┐рдпрдо рдХрд╛ selectorText == '.myClass:hover .block, .myItem:hover .element' , style.length == 2 , style[0] == 'color' , style[1] == 'display' ,ред style.color == 'red' рдФрд░ style.display == 'block' ред

рдмрд╛рдХреА рд╕рдм рддрдХрдиреАрдХ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ ...

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдирд┐рдпрдореЛрдВ рдХрд╛ рдкреНрд░рд╛рдердорд┐рдХ рдмрд╛рдИрдкрд╛рд╕ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рд╢реИрд▓рд┐рдпреЛрдВ рдФрд░ рд▓рд┐рдВрдХ рдЯреИрдЧ рдХреЗ рд╣рдорд╛рд░реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░) ... рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ rules рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реЗрд░ рдХреЗ рд╕рдордп рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред рд╢рд╛рдпрдж WebKit рдЗрд╕ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ lazily рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд╣рд▓рд╛ рдХреЙрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдПрдХ рд╕реЗрдЯ рдореЗрдВ рдХреБрдЫ рдЧрд╣рд░реА рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдкрд░рд┐рдгрд╛рдо рд╣реИ:

 $(document).ready(function(){ // ,    ,     if (!$ws._const.browser.isMobileSafari) { return; } var $body = $('body'); //     function addPseudoHover() { this.classList.add('ws-pseudo-hover'); } //     "" function removePseudoHover() { this.classList.remove('ws-pseudo-hover'); } //   [].filter(...) function uniq(item, index, array) { return array.indexOf(item, index + 1) == -1; } function trimHoverBase(selector) { return selector.substr(0, selector.indexOf(':hover')).trim(); } function filterHoverSelectors(selector) { return selector.indexOf(':hover') != -1; } function createBodyDelegate(hoverSelector){ $body.delegate(hoverSelector, 'mouseenter', addPseudoHover); $body.delegate(hoverSelector, 'mouseleave', removePseudoHover); } function processMutationRecord(mutationRecord) { var needRefresh = false; if (mutationRecord.addedNodes) { for(var i = 0, l = mutationRecord.addedNodes.length; i < l; i++) { if (mutationRecord.addedNodes[i].nodeName == 'LINK') { needRefresh = true; break; } } } if (needRefresh) { checkStylesheetSetDebonuced(); //       } } function checkStylesheetSet() { var allHoverSelectors = [], allRules = [], sheet, sheetCheckResult; for(var i = 0, l = document.styleSheets.length; i < l; i++) { sheet = document.styleSheets[i]; // ,      if (sheet.processed || sheet.rules.length === 0) { continue; } sheetCheckResult = checkCSSRuleSet(sheet); if (sheetCheckResult.rules.length > 0 && sheetCheckResult.selectors.length > 0) { Array.prototype.push.apply(allHoverSelectors, sheetCheckResult.selectors); Array.prototype.push.apply(allRules, sheetCheckResult.rules); } //           sheet.processed = true; } //   allRules.forEach(function(aRule){ aRule.selectorText = aRule.selectorText.replace(':hover', '.ws-pseudo-hover'); }); //   ,    body allHoverSelectors.map(trimHoverBase).filter(uniq).forEach(createBodyDelegate); } var checkStylesheetSetDebonuced = checkStylesheetSet.debounce(420); function checkCSSRuleSet(sheet) { var result = { selectors: [], rules: [] }; for(var i = 0, l = sheet.rules.length; i < l; i++) { var rule = sheet.rules[i]; if (rule.styleSheet && rule.href /* instanceof CSSImportRule*/) { //    @import checkCSSRuleSet(rule.styleSheet); } else if (rule.selectorText /* instanceof CSSStyleRule*/) { var hoverSelectors = getHoverSelectors(rule); if (hoverSelectors.length > 0) { if (checkStyles(rule)) { Array.prototype.push.apply(result.selectors, hoverSelectors); result.rules.push(rule); } } } } return result; } function checkStyles(rule) { for(var i = 0, l = rule.style.length; i < l; i++) { var styleItem = rule.style[i]; if (styleItem == 'display' && rule.style.display !== 'none') { return true; } if (styleItem == 'visibility' && rule.style.visibility !== 'hidden') { return true; } } return false; } function getHoverSelectors(rule) { return rule.selectorText.split(',').filter(filterHoverSelectors); } //      head new MutationObserver(function(mutationRecords){ mutationRecords.forEach(processMutationRecord); }).observe(document.getElementsByTagName('head')[0], { childList: true }); }); 


рдХреБрдЫ рд▓рд┐рдВрдХ:

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


All Articles