Если это не работает, это потому, что scroll
не является частью пользовательских событий .
Теперь, иногда это работает на самом деле странно ... ноимеет рациональное объяснение.
Доверенные события пользователя обычно считаются живыми довольно долгое время, но в конечном итоге они должны умереть:
btn_500ms.onclick = e => trigger_in(500); // works
btn_6s.onclick = e => trigger_in(6000); // fails
function trigger_in(ms) {
setTimeout(() => {
video.requestPictureInPicture()
.then(() => {
// auto-exit in 1s
setTimeout(() => {
document.exitPictureInPicture();
}, 1000);
})
.catch(console.error);
}, ms);
};
<video id="video" controls="" muted loop autoplay src="https://media.w3.org/2010/05/sintel/trailer.webm"></video>
<button id="btn_500ms">trigger PiP in 500ms</button>
<button id="btn_6s">trigger PiP in 6s</button>
Итак, я предполагаю, что то, что вы интерпретировали как работу только с первой прокруткой, на самом деле было вызвано некоторыми обстоятельствами, когда вы прокручивали после того, как макс.время события, которому доверяют пользователи (кажется, 5 с в текущем Chrome74, кстати).Вы можете попробовать просто щелкнуть в любом месте на странице вашего кодового заглушки, прежде чем снова прокрутить.