web-dev-qa-db-ja.com

Youtubeウェブサイトでライブサムネイルを無効にする

これはYoutubeアプリに関するものではないことに注意してください。それはブラウザからデスクトップ上のYoutubeウェブサイトを使用することについてです。

私は古いYoutubeウェブサイトレイアウト(?disable_polymer=1)を使用しています。

耐えられない新しいレイアウトの機能の1つは、サムネイルの上にマウスを置くと、ビデオの3秒間が自動再生されることです。

幸い、この機能は、私が使用していた古いレイアウトでは機能しませんでした。
残念ながら、今はそうです。彼らはそれを「修正」し、レイアウトに関係なく機能するようになりました。

この機能は、マウスの移動方法とマウスを置く場所に非常に注意する必要があるため、煩わしいものです。過去数か月に一度も3秒間の自動再生を積極的に呼び出したことはありませんが、マウスを十分に速く動かさなかったり、不注意にマウスを置いたりすると、何百もの不要な自動再生が発生します。サムネイル。プレビューは決して関連性がなく、再生によって考えられる結果は2つだけです。運が良ければ、コンテキスト外のナンセンスが3秒間表示され、運が悪ければ、ビデオのプロットツイストが明らかになります。あなたも見始める前に。

私は本当にこのホバープレイの嫌悪感を無効にしたいです。
Firefoxを使用していて、StylusとGreaseMonkeyをインストールしていますが、探しているWebページの要素がわかりません。
ライブプレビューである要素を「検査」できるようには見えません。開発者ツールでドキュメントツリーが開きますが、プレビューを表すノードがありません。
サムネイルの下のリンクを「検査」し、ツリー内でその周りを掘ることはできますが、それでも資金を調達することはできません。

この件に関して私が見つけた唯一のリモート関連情報は このRedditの投稿 ユーザースクリプトの使用を示唆しています:

// ==UserScript==
// @name         Hide Thumbnails
// @match        https://www.youtube.com/*
// @grant        GM_addStyle
// ==/UserScript==

GM_addStyle("ytd-thumbnail {display:none}");

これは、GreaseMonkeyスクリプトとしてもStylusスタイルシートとしても機能しません。 ytd-thumbnailというラベルの付いた要素はまったくないようです。

Youtube Webサイトでライブサムネイルを無効にして、サムネイルの上にマウスを置いたときにビデオが再生されないようにするにはどうすればよいですか?

2
GSerg

私はそれを追跡しました。ライブサムネイルは動的に作成され、マウスを離すとドキュメントから削除されるため、追跡が困難です。

関係するクラスはmouseover-playおよびmouseover-img、したがって、このStylusカスタムスタイルシートはそれらを取り除きます:

@-moz-document url-prefix("http://www.youtube.com/"), url-prefix("https://www.youtube.com/") {
    /* Remove the idiotic live thumbnails on Youtube */
    .mouseover-play, .mouseover-img {
        display: none !important;
    }
}

ただし、これでもサムネイルにバインドされたイベントハンドラーが実行され、ライブプレビューは表示されませんが、サーバーからクエリが実行され、サムネイルの上にマウスを移動するたびに約200Kbのトラフィックが無駄になります。これを完全に停止するには、GreaseMonkeyスクリプトが必要です。

// ==UserScript==
// @name        Remove idiotic live thumbnails on Youtube
// @namespace   gserg
// @include     youtube.com/*
// @include     http://www.youtube.com/*
// @include     https://www.youtube.com/*
// @version     1
// @grant       none
// ==/UserScript==

document.querySelectorAll(".yt-thumb-simple > img[data-mouseover-src]").forEach(i => {
    i.onload = null;
    i.removeAttribute("data-mouseover-src");
    i.removeAttribute("data-mouseover-log");
});

スクリプトが適切に配置されていれば、スタイラススタイルシートは実際には必要ありません。ライブプレビューの再生が終了した後に表示される半透明の「再生」三角形のみが非表示になります。

1
GSerg