[英]Javascript blocking multible scripts with mutation observer doese't work
我創建了一個腳本來阻止在 json 數組中定義的腳本。
但是當我加載超過 2 個腳本時,阻塞不再起作用。
誰能告訴我我的錯誤是什么,或者給我一個提示,我可以如何使它與多個腳本一起工作。
這阻止了 google recaptcha 腳本:
<script>
function blockScript(origin) {
const scripts = Array.from(document.getElementsByTagName("SCRIPT"));
if (scripts.length > 0) {
scripts.forEach((script) => {
if (script.src.includes(origin)) {
document.head.removeChild(script);
}
})
}
}
</script>
<script>
var json = [
{
"name" : "Google Recaptcha",
"url" : "www.google.com",
"desc" : "Recaptcha",
"rights": ""
}];
const observer = new MutationObserver((mutationsList, observer) => {
for(let mutation of mutationsList) {
const addedNodes = Array.from(mutation.addedNodes);
if (addedNodes && addedNodes.some(n => n.nodeName === 'SCRIPT')) {
for(var i = 0; i < json.length; i++) {
var obj = json[i];
console.log(obj.url);
blockScript(obj.url);
}
}
observer.disconnect();
}
});
observer.observe(document, { childList: true, subtree: true });
</script>
<script src="https://www.google.com/recaptcha/api.js?render=MYKEY"></script>
這不是。
<script>
function blockScript(origin) {
const scripts = Array.from(document.getElementsByTagName("SCRIPT"));
if (scripts.length > 0) {
scripts.forEach((script) => {
if (script.src.includes(origin)) {
document.head.removeChild(script);
}
})
}
}
</script>
<script>
var json = [
{
"name" : "Google Recaptcha",
"url" : "www.google.com",
"desc" : "Recaptcha",
"rights": ""
}];
const observer = new MutationObserver((mutationsList, observer) => {
for(let mutation of mutationsList) {
const addedNodes = Array.from(mutation.addedNodes);
if (addedNodes && addedNodes.some(n => n.nodeName === 'SCRIPT')) {
for(var i = 0; i < json.length; i++) {
var obj = json[i];
console.log(obj.url);
blockScript(obj.url);
}
}
observer.disconnect();
}
});
observer.observe(document, { childList: true, subtree: true });
</script>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<script src="https://www.google.com/recaptcha/api.js?render=MYKEY"></script>
提前致謝!
刪除斷開連接方法將解決此問題並考慮延遲加載的腳本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.