我試着用以下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正是我需要更好地處理這個問題。
這個突變觀察者怎麼寫?我從來沒有寫過一個突變觀察者,我覺得這個例子非常短暫,非常基本,正是我需要了解我剛剛描述的邏輯的代碼上下文,我會非常感謝任何願意試着展示給我和其他有類似問題的人。
可能不是一個問題,但請注意,你的腳本將不靜音,可以由製表擴散的聲音,只有那些在DOM作爲HTMLAudioElement內附加的那些所有可能的來源。如果位於iframe中,它將會丟失所有不在DOM中的HTMLAudioElements,所有視頻元素,所有AudioContexts以及所有上述+附加到DOM。如果真正的擴展是一個選項,那麼使用[chrome.tabs API](https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/tabs/update)可能更容易'update(tabId,{muted:true})'方法 – Kaiido