を必要と私は特定のウェブサイトからすべてのオーディオを削除するには、次のuserscriptを使用しようとしました:オーディオではJavaScriptをミュートされることはありません - mutationobserverとオーディオタグを削除が
// ==UserScript==
// @name addicto
// @namespace nms
// @include http://*
// @include https://*
// @version 1
// @grant none
// ==/UserScript==
addEventListener('DOMContentLoaded',()=>{
let sites = ['mako.co.il'];
let href = window.location.href;
for (let i = 0; i < sites.length; i++) {
if (href.includes(sites[i])) {
Array.prototype.slice.call(document.querySelectorAll('audio')).forEach((audio)=>{
audio.muted = true;
});
}
}
// If href includes the value of the iteration on the "sites" array, do stuff.
});
このコードは動作しませんでしたし、私は仮定しますすべてのaudio
タグがランダムに入ってきてDOMを突然変異させているのが私がこれにうまく対処するために必要なものであることを確認してください。
どのようにこの突然変異観察者を書き込むことができますか?私は変異観察者を書いたことは一度もありませんし、この例が非常に短くて基本的であり、私が今説明した論理のコードコンテクストを味わう必要があるかのように感じます。それと同じ問題を抱えている他の人や私にそれを見せてください。
が問題になることが、あなたのスクリプトがタブによって拡散させることができた音、HTMLAudioElementとしてDOM内で追加されるだけのもののすべての可能なソースをミュートしないことに注意していない可能性があります。 DOM内にないHTMLAudioElements、すべてのビデオ要素、すべてのAudioContext、iframe内にある場合は上記のすべてがDOMに追加されます。実際の拡張機能がオプションである場合、[chrome.tabs API](https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/tabs/update)を'update(tabId、{muted:true})'メソッド – Kaiido