рдкреГрд╖реНрда рджреГрд╢реНрдпрддрд╛ API рдФрд░ рджреГрд╢реНрдпрддрд╛ред Js

рдЪрд░реНрдордХрд╛рд░ рдмрд┐рд▓реНрд▓реА

рдкреГрд╖реНрда рджреГрд╢реНрдпрддрд╛ рдПрдкреАрдЖрдИ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рдирдпрд╛ рдПрдкреАрдЖрдИ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдкрдХреА рд╕рд╛рдЗрдЯ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдФрд░ рдЯреИрдм рдЦреЛрд▓рд╛ рд╣реИред

рдпрд╣ рдПрдкреАрдЖрдИ рд╣рдорд╛рд░реЗ рд╡реЗрдм рдлреНрд░реЗрдВрдбрд▓реА рдФрд░ рдЕрдзрд┐рдХ рдЖрд░рд╛рдорджрд╛рдпрдХ рдХреИрд╕реЗ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ? рд╡реИрд╕реЗ рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ:

рдкреЗрдЬ рд╡рд┐рдЬрд┐рдмрд┐рд▓рд┐рдЯреА рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ ( рдИрд╡рд┐рд▓ рдорд╛рд░реНрдЯрд┐рдпрдВрд╕ рдХреА рдорд╣рд┐рдорд╛ рдХреЗ рд▓рд┐рдП) рд╡рд┐рдЬрд┐рдмрд┐рд▓рд┐рдЯреА.рдЬреЗрдПрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╡рд┐рдХрд╕рд┐рдд рдХреАред рдпрд╣ рдЖрдкрдХреЛ рд╡реЗрдВрдбрд░ рдЙрдкрд╕рд░реНрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рд╢реЙрд░реНрдЯ рдХреНрд▓реАрди рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪ-рд╕реНрддрд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ "рдЪреАрдиреА" рдЬреЛрдбрд╝рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Visibility.every рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рд╕рд╛рдЗрдЯ рдПрдХ рдЦреБрд▓реЗ рдЯреИрдм рдореЗрдВ рд╣реИ)ред

рд╡реАрдбрд┐рдпреЛ рдкреНрд▓реЗрдпрд░ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рдЬреЛ рдкреЗрдЬ рдХреЗ рдЕрджреГрд╢реНрдп рд╣реЛрдиреЗ рдкрд░ рд╡реАрдбрд┐рдпреЛ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ (Google Chrome 13 рдореЗрдВ рдЦреБрд▓рд╛)ред

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рд╕рдорд░реНрдерди


рдкреЗрдЬ рд╡рд┐рдЬрд┐рдмрд┐рд▓рд┐рдЯреА рдПрдкреАрдЖрдИ рдЕрдм Google Chrome 13 рдФрд░ IE 10 рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИред рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ 5 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдХреЗ рд▓рд┐рдП, Private_face рд╕реЗ рдПрдХ рдореЛрдЬрд╡рд┐рдЬрд╝реАрдмрд┐рд▓рд┐рдЯреА рд╣реИрдХ рд╣реИ рдЬреЛ рдкреЗрдЬ рд╡рд┐рдЬрд╝рд┐рдмрд┐рд▓реА рдПрдкреАрдЖрдИ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИ (рдпрд╣ рд╣реИрдХ рд╡рд┐рдЬрд┐рдмрд┐рд▓рд┐рдЯреА .js рд╕реЗ рдкрд╣рд▓реЗ рдкреГрд╖реНрда рдореЗрдВ рдЬреБрдбрд╝рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред

рдбрдмреНрд▓реВ 3 рд╕реА рдкреЗрдЬ рд╡рд┐рдЬрд┐рдмрд┐рд▓рд┐рдЯреА рдПрдкреАрдЖрдИ рдорд╛рдирдХ рдХрд╛ рдПрдХ рдорд╕реМрджрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдиреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рд╕рдорд░реНрдерди рд╕рдордп рдХреА рдмрд╛рдд рд╣реИред

рд▓реЗрдХрд┐рди рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрд╕ рдПрдкреАрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ - рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╕реБрдзрд╛рд░ рд╣реИ, рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЬреЛрдбрд╝ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕реЗ <video> ред рдпрджрд┐ рд╕рдорд░реНрдерди рд╣реИ, рддреЛ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛, рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рд╕рд╛рдЗрдЯ рдирд┐рдпрдорд┐рдд рд╕рд╛рдЗрдЯреЛрдВ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░реЗрдЧреА рдФрд░ рд╕реЛрдЪрддреА рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣рдореЗрд╢рд╛ рд╕рд╛рдЗрдЯ рджреЗрдЦрддрд╛ рд╣реИред Visibility.js рдореЗрдВ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдлрд╝рдВрдХреНрд╢рди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдЧрдП рд╣реИрдВ рддрд╛рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪ рд╕рдХреЗ рдХрд┐ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реИ рдпрд╛ рдирд╣реАрдВред

рд░рд╛рдЬреНрдпреЛрдВ


рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдорд╛рдирдХ рдореЗрдВ 4 рд╕рдВрднрд╛рд╡рд┐рдд рдкреГрд╖реНрда рджреГрд╢реНрдпрддрд╛ рд░рд╛рдЬреНрдп рд╣реИрдВ:

рдФрд░ рдЬрдм рдХрд┐рд╕реА рдЕрдиреНрдп рд░рд╛рдЬреНрдп рдХреЛ рдорд╛рдирдХ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╕рд╛рдЗрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╣реА рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИ рдпрд╛ рдирд╣реАрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ document.hidden рд╣реИред document.hidden рд╕рдВрдкрддреНрддрд┐ (рд╡рд┐рдХреНрд░реЗрддрд╛ рдХреЗ рдЙрдкрд╕рд░реНрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓реЛ, рдХреНрд░реЛрдо рдореЗрдВ рдпрд╣ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ Visibility.hidden() ) рдпрд╛ Visibility.hidden() рдореЗрдВ Visibility.hidden() рд╡рд┐рдзрд┐ред рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╕рд╛рдЗрдЯ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИ, рддреЛ рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдФрд░ рд░рд╛рдЬреНрдп рдХреЗ рдирд╛рдо рдХреА "hidden" рд╕рд╛рде рддреБрд▓рдирд╛ рди рдХрд░реЗрдВред

Visibility.js


рд╡рд┐рдХреНрд░реЗрддрд╛ рдЙрдкрд╕рд░реНрдЧреЛрдВ рдХреЗ рдЪреЗрдХ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдХреЛрдб рд╕реЗ рдбрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рд╡рд┐рдЬрд╝рд┐рдмрд┐рд▓рд┐рдЯреА.рдЬреЗрдПрд╕ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдкреГрд╖реНрда рд╡рд┐рдЬрд┐рдмрд┐рд▓рд┐рдЯреА рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рддреБрд░рдВрдд рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ, рдФрд░ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдореИрдВ рдПрдкреАрдЖрдИ рдорд╛рдирдХ рд╕реЗ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред

рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░реВрд╕реА рдЧреНрд░реБрдкрди рдореЗрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдВрдкреАрдбрд╝рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдЗрд╕рдХрд╛ рд╡рдЬрди рдХреЗрд╡рд▓ 1 KB рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рдХреЗ рдПрдХ рд╕рдореВрд╣ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИред

Visibility.every

Visibility.every(interval, callback) setInterval(callback, interval) Visibility.every(interval, callback) рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИ, рд▓реЗрдХрд┐рди callback рддрднреА рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдм рдкреЗрдЬ рджреЗрдЦрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрд▓рдЯреА рдЧрд┐рдирддреА рдХреЛ рдХреЗрд╡рд▓ рддрднреА рджрд┐рдЦрд╛рдПрдВрдЧреЗ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреГрд╖реНрда рджреЗрдЦрддрд╛ рд╣реИ:
 Visibility.every(1000, function() { updateCountdownAnimation(); }); 


Visibility.every(visible, hidden, callback) 2 рд╕рдордп рдХрд╛ рдЕрдВрддрд░рд╛рд▓ рд▓реЗ рд╕рдХрддреА рд╣реИ - visible рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджрд┐рдЦрд╛рдИ рджреЗ, рдФрд░ hidden - рдЬрдм рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реЛред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рд╣рд░ рдорд┐рдирдЯ рдирдП рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдИ рд╕рд╛рдЗрдЯ рдЦреЛрд▓рддрд╛ рд╣реИ (рдпрд╛рдиреА, рдпрд╣ рдЙрд╕рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ)ред рдФрд░ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд╛рдЗрдЯ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рд╣реИ (рдХрд┐рд╕реА рдЕрдиреНрдп рдкреЗрдЬ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ) рддреЛ рд╣рдо рдЙрд╕рдХрд╛ рдЯреНрд░реИрдлрд╝рд┐рдХ рдмрдЪрд╛рдПрдВрдЧреЗ рдФрд░ рд╣рд░ 5 рдорд┐рдирдЯ рдореЗрдВ рдореЗрд▓ рдЪреЗрдХ рдХрд░реЗрдВрдЧреЗ:
 var minute = 60 * 1000; Visibility.every(minute, 5 * minute, function () { checkForEmail(); }); 


рд▓реЗрдХрд┐рди рдЖрдо рддреМрд░ рдкрд░ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рд╕рдордп рдХрд╛ рд╕рдВрдХреЗрдд рдорд┐рд▓рддрд╛ рд╣реИ - рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдордЬрд╛рдХред рдЗрд╕рд▓рд┐рдП, Visibility.js jQuery рдХреЗ Chrono рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ (рдЖрдкрдХреЛ Visibility.js рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред рдХреЛрдб рд╕реНрдкрд╖реНрдЯ рдФрд░ рдордзреБрд░ рд░реВрдк рд╕реЗ рдХреИрдВрдбрд┐рдб рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:
 Visibility.every('minute', '5 minutes', function () { checkNewMails(); }); 


Visibility.every рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЯрд╛рдЗрдорд░ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ Visibility.stop(timerID) ( clearInterval рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ Visibility.stop(timerID) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 var slideshow = Visibility.every(5 * 1000, function () { nextSlide(); }); $('.stopSlideshow').click(function () { Visibility.stop(slideshow); }); 


рдпрджрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреЗрдЬ рд╡рд┐рдЬрд┐рдмрд┐рд▓рд┐рдЯреА рдПрдкреАрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ Visibility.every рдорд╛рди рд▓реЗрдЧреА рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣рдореЗрд╢рд╛ рд╕рд╛рдЗрдЯ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ (рдЕрд░реНрдерд╛рдд, рдпрд╣ рд╕реЗрдЯ setInterval рдХрд╛ рдкреВрд░рд╛ рдПрдирд╛рд▓реЙрдЧ рдмрди рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рднреА рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ)ред

Visibility.onVisible

рдПрдХ рдЕрдиреНрдп рдорд╛рдирдХ рд╕реНрдерд┐рддрд┐ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдЗрдЯ рдХреЛ рджреЗрдЦрдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдкреГрд╖реНрдарднреВрдорд┐ рдЯреИрдм рдореЗрдВ рд▓рд┐рдВрдХ рдЦреЛрд▓рд╛ рдерд╛)ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Visibility.onVisible(callback) ред Visibility.onVisible(callback) рд╡рд┐рдзрд┐ рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓ рдкреГрд╖реНрда рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдкрд░ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреА рд╣реИред рдпрджрд┐ рдкреГрд╖реНрда рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИ, рддреЛ callback рддреБрд░рдВрдд рдХрд╣рд╛ callback ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдЬрд╛рддреЗ рд╕рдордп, рд╣рдо рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╕реВрдЪрдирд╛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдФрд░ 10 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рдЙрд╕реЗ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рдЫрд┐рдкрд╛рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреГрд╖реНрдарднреВрдорд┐ рдЯреИрдм рдореЗрдВ рддреБрд░рдВрдд рд╕рд╛рдЗрдЯ рдЦреЛрд▓рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдЗрдЯ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЗрдЦреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж 10 рд╕реЗрдХрдВрдб рдХрд╛ рд╕рдордп рджреЗрдВ:
 Visibility.onVisible(function () { setTimeout(function() { Notification.hide(); }, 10 * 1000); }); 


рдпрджрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреЗрдЬ рд╡рд┐рдЬрд┐рдмрд┐рд▓рд┐рдЯреА рдПрдкреАрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ Visibility.onVisible(callback) callback рддреБрд░рдВрдд рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред

Visibility.afterPrerendering

рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рд╣реИ rel="prefetch" rel="prefetch" рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕ рд▓рд┐рдВрдХ рдХреЛ рдмрд╛рдж рдореЗрдВ рдЦреЛрд▓рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЗрдЦ рдХреЗ рдЕрдЧрд▓реЗ рдЕрдзреНрдпрд╛рдп рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛ рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рдкрд╣рд▓реА рдмрд╛рд░ред

Google Chrome рдиреЗ рдЖрдЧреЗ рдФрд░ рдХрд┐рдпрд╛ rel="prerender" rel="prerender" - рдпрд╣ рди рдХреЗрд╡рд▓ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕реЗ рддреБрд░рдВрдд рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рдХреЛ рднреА рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Google рд╕реЗ рд╡реАрдбрд┐рдпреЛ )ред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрдИ рдкреНрд░рддрд┐рдмрдВрдз рд╣реИрдВ рдЬрдм рдкреГрд╖реНрда рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред AJAX рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛, рдСрдбрд┐рдпреЛ рдпрд╛ рд╡реАрдбрд┐рдпреЛ рдкреЛрд╕реНрдЯ рдХрд░рдирд╛, рдкреЙрдкрдЕрдк рдЦреЛрд▓рдирд╛, рднрд╛рд░реА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдирд┐рд╖рд┐рджреНрдз рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЬрдм рддрдХ рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╛рдЗрдЯ рдХреЛ рдирд╣реАрдВ рдЦреЛрд▓реЗрдЧрд╛ рддрдм рддрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЖрдВрдХрдбрд╝реЛрдВ рдореЗрдВ рдирд╣реАрдВ рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрди рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, Visibility.afterPrerendering(callback) , рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ callback рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ рдЬрдм рдкреГрд╖реНрда рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦреБрд▓рддрд╛ рд╣реИ (рдЕрд░реНрдерд╛рдд, рдпрд╣ рдкреВрд░реНрд╡-рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рдПрдЧрд╛) рдпрд╛ callback рдареАрдХ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ рдпрджрд┐ рдкреГрд╖реНрда рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рддреБрд░рдВрдд рдЦреЛрд▓рд╛ рдЧрдпрд╛ рдерд╛ред callback рдЖрдк AJAX рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдСрдЯреЛ-рдЕрдкрдбреЗрдЯ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, <video> рдкреГрд╖реНрда рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЖрдВрдХрдбрд╝реЛрдВ рдореЗрдВ рдЧрд┐рдиреЗрдВред

 Visibility.afterPrerendering(function () { Statistics.countVisitor(); }); 


рдпрджрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреЗрдЬ рд╡рд┐рдЬрд┐рдмрд┐рд▓рд┐рдЯреА рдПрдкреАрдЖрдИ рдпрд╛ рдкреНрд░реА-рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ Visibility.afterPrerendering(callback) callback рддреБрд░рдВрдд рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред

рдирд┐рдореНрди рд╕реНрддрд░ рдХреЗ рдХрд╛рд░реНрдп

рдпрджрд┐ рдЖрдк рдпрд╣ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рд╕рднреА "рдЪреАрдиреА" рдХрд┐рд╕ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рдпрджрд┐ рдЖрдк рдХреБрдЫ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╡рд┐рдЬрд┐рдмрд┐рд▓рд┐рдЯреА.рдЬреЗрдПрд╕ рдХреЗ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рддреБрд░рдВрдд рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдкреЗрдЬ рд╡рд┐рдЬрд┐рдмрд┐рд▓рд┐рдЯреА рдПрдкреАрдЖрдИ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рджреГрд╢реНрдпрддрд╛ рдкреГрд╖реНрда рджреГрд╢реНрдпрддрд╛ API рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА true рддреЛ Visibility.isSupported() true рд╣реИред рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЬреЛ рдкреЗрдЬ рд╡рд┐рдЬрд┐рдмрд┐рд▓рд┐рдЯреА рдПрдкреАрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЙрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЗрд╕рдореЗрдВ document.hidden рд╣реЛрдЧрд╛ред undefined , рдФрд░ true рдпрд╛ false (рдмрд╕ рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдХреЛрдИ рд╡реЗрдВрдбрд░ рдЙрдкрд╕рд░реНрдЧ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, document.webkitHidden . document.webkitHidden )ред

Visibility.state() рд░рд╛рдЬреНрдп рдХрд╛ рдирд╛рдо ( "visible" , "hidden" рдпрд╛ "prerenderer" ) рджреЗрддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ document.visibilityState рдореЗрдВ рджрд┐рдЦрддреА рд╣реИред document.visibilityState рдкреНрд░реЙрдкрд░реНрдЯреА, рд╡реЗрдВрдбрд░ рдкреНрд░реАрдлрд┐рдХреНрд╕ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, document.webkitVisibilityState )ред рдкрд┐рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг:
 if( Visibility.isSupported() ) { if ( 'hidden' == Visibility.state() ) { Statistics.userOpenPageInBackgroundTab(); } if ( 'prerender' == Visibility.state() ) { Statistics.pageIsPrerendering(); } }) 


рдпрджрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреГрд╖реНрда рджреЗрдЦрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рддреЛ Visibility.hidden() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред Visibility.hidden() (рдЪреВрдВрдХрд┐ рд░рд╛рдЬреНрдпреЛрдВ рдХреА рд╕реВрдЪреА рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдлрд┐рд░ рд╕реЗ рднрд░реА рдЬрд╛ рд╕рдХрддреА рд╣реИ)ред рдпрд╣ рд╕рд┐рд░реНрдл document.hidden рдореЗрдВ рджрд┐рдЦрддрд╛ рд╣реИред рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рд╡реАрдбрд┐рдпреЛ рдХреЗ рдСрдЯреЛ-рдкреНрд▓реЗ рдХреЛ рддрднреА рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИ рдЬрдм рдкреЗрдЬ рд╕рдХреНрд░рд┐рдп рдЯреИрдм рдореЗрдВ рддреБрд░рдВрдд рдЦреБрд▓рддрд╛ рд╣реИ (рдФрд░ рдирдИ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдирд╣реАрдВ):
 $(document).load(function () { if ( !Visibility.hidden() ) { VideoPlayer.play(); } }); 


рдХрд┐рд╕реА рдкреГрд╖реНрда рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, document рдореЗрдВ рдПрдХ visibilitychange webkitvisibilitychange (Chrome рдореЗрдВ, webkitvisibilitychange ) рд╣реИред Visibility.change(callback) рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рддрд░реАрдХрд╛ рд╣реИ - Visibility.change(callback) рд╡рд┐рдзрд┐ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╣реА рд▓рдЯрдХрд╛ рджреЗрддреА рд╣реИ рдФрд░ рд╣рд░ рдмрд╛рд░ рдкреЗрдЬ рджреГрд╢реНрдпрддрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдиреЗ рдкрд░ callback рдХрд░рддрд╛ рд╣реИред callback рдХрд╛ рдкрд╣рд▓рд╛ рддрд░реНрдХ рдИрд╡реЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдЧрд╛, рдФрд░ рджреВрд╕рд░рд╛ рд░рд╛рдЬреНрдп рдХрд╛ рдирд╛рдо рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 Visibility.change(function (e, state) { Statistics.trackChangeVisibility(state); }); 


рд╕реНрдерд╛рдкрдирд╛


рд╕рдВрджрд░реНрдн


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


All Articles