kota1021
@kota1021 (松本 幸太郎)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

autoplay属性なしで自動再生される動画をブロックする方法

https://wired.jp/article/vol47-the-world-in-2023-el-nino-is-coming/
上のサイトでは記事の右側に自動再生される動画があります。userscriptでブロックしたかったので、ページのソースを見たのですがvideoタグにはautoplay属性が見当たりませんでした。これはどのように自動再生を実装しているのでしょうか?

<video class="vjs-tech" 
webkit-playsinline="" 
playsinline="playsinline" 
crossorigin="anonymous" 
id="vjs_video_1_html5_api" 
tabindex="-1" 
preload="metadata" 
muted="muted" 
src="ソース" 
...

また以下のようなuserscriptを書いてみたのですが、止まりません。
video.remove()や
video.parentNode.removeChild(video)
も試しましたが、勝手に再構築?されるのか、消えませんでした。
どこが間違っているのか、どうすればブロックできるのか教えてもらえませんか?

// ==UserScript==
// @name        Disable HTML5 Videos autoplay/autopreload
// @description Prevent webbrowser from automatically playing/downloading HTML5 videos
// @match       *://*/*
// @run-at document-idle
// @require  https://gist.github.com/GitHub30/1b13ed6687a22385a81cf98fefdd5a13/raw/42012a345cc5cb1e4f773300e99765b644a40164/async$.js
// ==/UserScript==
async function getVideos(){
    
    try {
        var videos = await async$$('video'); //非同期で読み込まれる要素を取得する
        console.log("抽出したvideos",videos);

        for (var i = 0; i < videos.length; i++) {    
            const video = videos[i]    
            video.removeAttribute("autoplay");
            video.removeAttribute("loop");
            video.setAttribute("preload", "none");
            video.pause();
            Object.freeze(video.parentNode);
            Object.freeze(video);//属性を消した上にfreezeまでしてるのに勝手に再生しやがる!
            video.addEventListener('play', function() {
                console.log('再生開始',video);
                video.pause();
                });
            video.addEventListener('pause', function() {
                console.log('再生停止',video);
                });
        }
    } catch(e) {
    console.error("エラー: " + e);
    }
};

getVideos()
0

No Answers yet.

Your answer might help someone💌