feat(disable-autoplay): add apply once, resolve #9

This commit is contained in:
JellyBrick
2023-10-02 19:08:17 +09:00
parent 61b04e9b42
commit 042083b112
3 changed files with 34 additions and 6 deletions

View File

@ -1,4 +1,6 @@
export default () => {
import type { ConfigType } from '../../config/dynamic';
export default (options: ConfigType<'disable-autoplay'>) => {
const timeUpdateListener = (e: Event) => {
if (e.target instanceof HTMLVideoElement) {
e.target.pause();
@ -6,13 +8,16 @@ export default () => {
};
document.addEventListener('apiLoaded', (apiEvent) => {
apiEvent.detail.addEventListener('videodatachange', (name: string) => {
const eventListener = (name: string) => {
if (options.applyOnce) {
apiEvent.detail.removeEventListener('videodatachange', eventListener);
}
if (name === 'dataloaded') {
apiEvent.detail.pauseVideo();
document.querySelector<HTMLVideoElement>('video')?.addEventListener('timeupdate', timeUpdateListener);
} else {
document.querySelector<HTMLVideoElement>('video')?.removeEventListener('timeupdate', timeUpdateListener);
document.querySelector<HTMLVideoElement>('video')?.addEventListener('timeupdate', timeUpdateListener, { once: true });
}
});
};
apiEvent.detail.addEventListener('videodatachange', eventListener);
}, { once: true, passive: true });
};