1 回答

TA貢獻1794條經驗 獲得超7個贊
因此,這將阻止您的視頻在任何滾動事件中播放。如果你希望它在離開視口時停止播放,你可以考慮使用類似IntersectionObserver API 的東西來做一些事情,如果它在視口中(播放視頻)或在視口外(停止視頻)。
注意:大多數現代瀏覽器不允許 Javascript 啟動視頻,除非至少已經有一些用戶與頁面進行了交互。
const [playing, setPlaying] = useState(false);
const videoRef = useRef(null);
useEffect(() => {
window.addEventListener('scroll', debounce(handleScroll, 200))
return () => {
window.removeEventListener('scroll', handleScroll);
};
}, []}
const startVideo = () => {
videoRef.current.pause();
setPlaying(false);
}
const pauseVideo = () => {
videoRef.current.play();
setPlaying(true);
}
const handleScroll = (e) => {
if (playing) {
pauseVideo();
}
}
const handleVideoPress = () => {
if (playing) {
startVideo();
} else {
pauseVideo();
}
};
return (
<div className="video">
<video
onClick={handleVideoPress}
className="video__player"
loop
ref={videoRef}
src={url}
></video>
);
}
我做了一個使用 React 的引用鉤子的工作示例IntersectionObserver,可以在這里找到:
https://codesandbox.io/s/strange-smoke-p9hmx
如果您還有其他問題,請告訴我。
添加回答
舉報