рдХреНрд░реЛрдо 69 рдореЗрдВ рдкрд┐рдХреНрдЪрд░-рдЗрди-рдкрд┐рдХреНрдЪрд░ рдореЛрдб


рд╕рдВрд╕реНрдХрд░рдг 69 рдореЗрдВ, PictureInPicture рдПрдХреНрд╕рдЯреЗрдВрд╢рди рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рд╕рднреА рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╡реАрдбрд┐рдпреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред

рдореБрдЭреЗ рддреБрд░рдВрдд рдПрдХ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓рд╛, рд▓реЗрдХрд┐рди рдкрд┐рдХреНрдЪрд░-рдЗрди-рдкрд┐рдХреНрдЪрд░ рдореЛрдб (рдЗрд╕рдХреЗ рдмрд╛рдж PiP) рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд┐рдХреНрдЪрд░-рдЗрди-рдкрд┐рдХреНрдЪрд░ рдмрдЯрди рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдерд╛, рдореИрдВ рдХреНрд░реЛрдо рдлреНрд▓реИрдЧ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрдпрд╛ рдерд╛ : // рдЭрдВрдбреЗ / # рд╕рдХреНрд╖рдо-рдкрд┐рдХреНрдЪрд░-рдЗрди-рдкрд┐рдХреНрдЪрд░ , рдорд╛рди "рдбрд┐рдлрд╝реЙрд▓реНрдЯ" рд╣реИ, рдЗрд╕ рдзреНрд╡рдЬ рдХреЗ рд▓рд┐рдП "рд╕рдХреНрд╖рдо" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред



рдЗрд╕рдиреЗ рдорджрдж рдирд╣реАрдВ рдХреА, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рдФрд░ рдХреНрд░реЛрдо рдзреНрд╡рдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА : // рдЭрдВрдбреЗ / # рд╕рдХреНрд╖рдо-рд╕рддрд╣реЛрдВ-рдХреЗ рд▓рд┐рдП-рд╡реАрдбрд┐рдпреЛ , рдЗрд╕рдХреЗ рд▓рд┐рдП "рдбрд┐рдлрд╝реЙрд▓реНрдЯ" рдореВрд▓реНрдп "рдЕрдХреНрд╖рдо" рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред



рдЪрд╛рд▓реВ рдХрд┐рдпрд╛ рдФрд░ рдХрдорд╛рдпрд╛ред рд╡реЗ рдпрд╣ рднреА рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдзреНрд╡рдЬ # рд╕рдХреНрд╖рдо-рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ-рд╡реЗрдм-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдиреЗ рдореЗрд░реЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред



рдЙрджрд╛рд╣рд░рдг


рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ, <video /> рдЯреИрдЧ, PiP рдореЛрдб рдХреЛ рдЪрд╛рд▓реВ / рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдЯрди, рдЙрдкрд▓рдмреНрдз PiP рдИрд╡реЗрдВрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред

<html> <head> <title>Chrome 69</title> </head> <body> <video width="320" height="240" controls> <source src="https://www.w3schools.com/html/mov_bbb.mp4" type="video/mp4"> </video> <br/> <button> PiP</button> <script> const video = document.querySelector('video'); const button = document.querySelector('button'); if (!document.pictureInPictureEnabled) { button.textContent = ' PiP  .'; button.disabled = true; } button.addEventListener('click', () => { if (document.pictureInPictureElement) { document.exitPictureInPicture() .then(() => { /**/ }) .catch(() => { /**/ }); } else { video.requestPictureInPicture() .then(() => { /**/ }) .catch(() => { /**/ }); } }); video.addEventListener('enterpictureinpicture', () => { button.textContent = ' PiP'; }); video.addEventListener('leavepictureinpicture', () => { button.textContent = ' PiP'; }); </script> </body> </html> 

рдореЛрдб рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:

 if (document.pictureInPictureEnabled){ // PiP  } 

рдпрд╣ рд╕рд░рд▓ рд╣реИ, рдпрджрд┐ рд╕рдВрдкрддреНрддрд┐ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдпрд╣ рд╕рд╣реА рдпрд╛ рдЧрд▓рдд рд╣реИред

рд╣рдо рдореЛрдб рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ:
 button.addEventListener('click', () => { video.requestPictureInPicture() .then(() => { /**/ }) .catch(() => { /**/ }); }); 

рдпрджрд┐ рдЕрдиреБрдорддрд┐ рдорд┐рд▓реА рд╣реИ, рддреЛ рдЕрдиреНрдпрдерд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдШрдЯрдирд╛ рд╕реЗ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЕрдиреБрд░реЛрдз рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

Document.pictureInPictureElement рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣рдорд╛рд░рд╛ <рд╡реАрдбрд┐рдпреЛ /> рддрддреНрд╡ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред

рдореЛрдб рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдКрдкрд░реА рджрд╛рдПрдБ рдХреЛрдиреЗ рдореЗрдВ Pi рд╡рд┐рдВрдбреЛ рдореЗрдВ рдХреНрд░реЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:

 button.addEventListener('click', () => { if (document.pictureInPictureElement) { document.exitPictureInPicture() .then(() => { /**/ }) .catch(() => { /**/ }); } }); 

Document.pictureInPictureElement рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдлрд┐рд░ рд╕реЗ рдЕрд╢рдХреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

PiP рдШрдЯрдирд╛рдПрдБ


рджреЛ рдИрд╡реЗрдВрдЯ рдХреНрд░рдорд╢рдГ рдЙрдкрд▓рдмреНрдз, рдмрдВрдж рдФрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:

 video.addEventListener('enterpictureinpicture', () => { //  button.textContent = ' PiP'; }); video.addEventListener('leavepictureinpicture', () => { //  button.textContent = ' PiP'; }); 

рд╕рд╛рд░рд╛рдВрд╢


рдлрд┐рд▓рд╣рд╛рд▓, рдпрд╣ рдореЛрдб рдХреЗрд╡рд▓ <рд╡реАрдбрд┐рдпреЛ /> рдЯреИрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
PiP рд╡рд┐рдВрдбреЛ рдирд┐рдЪрд▓реЗ рджрд╛рдПрдВ рдХреЛрдиреЗ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рдЕрдм рддрдХ рд╣рдо рдЗрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
PiP рдореЛрдб рдлреБрд▓-рд╕реНрдХреНрд░реАрди рдореЛрдб, рдпрд╛ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрдд рд╣реИ, рдЬреЛ рдХрд╛рдлреА рддрд╛рд░реНрдХрд┐рдХ рд╣реИред
рдПрдХ рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ PiP рд╡рд┐рдВрдбреЛ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдЬрд┐рд╕ рдЯреИрдм рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ PiP рдореЛрдб рдХреЛ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рдЖрдЗрдХрди (KDPV рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ) рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

UPD : рдирдпрд╛ API W3C рдбрд┐рд╡реАрдЬрди рд╣реИ рдЬрд┐рд╕реЗ WICG (рд╡реЗрдм тАЛтАЛрдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЗрдирдХреНрдпреВрдмреЗрдЯрд░ рдХрдореНрдпреБрдирд┐рдЯреА рдЧреНрд░реБрдк) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╕рд╛рдЗрдЯреЗрдВ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИрдВ рдХрд┐ PiP рд╡рд┐рдВрдбреЛ рдХреЛ рдХрдм рдЦреЛрд▓реЗрдВ рдФрд░ рдмрдВрдж рдХрд░реЗрдВ, рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдмрдЯрди рдмрдирд╛рдПрдВ рдФрд░ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ PiP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рддреЛ рдЖрдВрдХрдбрд╝реЗ рдПрдХрддреНрд░ рдХрд░реЗрдВред

рдХреБрдЫ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди W3C рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реИрдВ
(рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдУрдкреЗрд░рд╛ рдФрд░ Yandex.Browser)ред
рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдФрд░ рдПрдЬ рдиреЗ рдЕрднреА рддрдХ рдирдП рдПрдкреАрдЖрдИ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдШреЛрд╖рдгрд╛ рдирд╣реАрдВ рдХреА рд╣реИред

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


All Articles