Как избежать document.write во внешнем скрипте

Oct 24 2020

Я хочу избежать или заменить загрузку document.write через внешний скрипт. вот ссылка//lv.adocean.pl/files/js/aomini.js

Я пробовал это (кто-то ответил), но это не помогло.

document.write=function(s){
    var scripts = document.getElementsByTagName('script');
    var lastScript = scripts[scripts.length-1];
    lastScript.insertAdjacentHTML("beforebegin", s);
}

Есть идеи?

Ответы

2 LouysPatriceBessette Oct 24 2020 at 18:03

Я постараюсь объяснить предложение @freem-m, надеясь быть ясным.

Повторное присвоение document.write, которое возвращает функцию, «пустой функции» ... может помочь избежать «нормального» выполнения document.write.

Под «пустой функцией» я подразумеваю полностью действующую функцию, но строго ничего не делающую.

Поэтому после этого переназначения каждый раз document.writeфункция будет вызываться в любом месте документа, вместо того, чтобы выполнять writeфункцию, найденную в documentсвойстве объекта, она будет выполнять эту «пустую функцию» (читай: ничего).

Вот демонстрация этого принципа, примененного к console.logфункции, просто для простоты и наглядности в этой демонстрации здесь.

console.log("I am executing...")
console.log("I am executing too...")

// Assing an empty function
console.log = function(){}
console.log("I am NOT executing!")
console.log("I feel useless now... :( ")

Теперь, чтобы «временно» избежать выполнения функции, вы должны сохранить ее в другой переменной, чтобы «отменить» повторное присвоение ...

console.log("I am executing...")
console.log("I am executing too...")

// Assign the function to a variable
let tempStorageOfTheDisabledFunction = console.log

// Assing an empty function
console.log = function(){}
console.log("I am NOT executing!")
console.log("I feel useless... :( ")

// Restore the original function
console.log = tempStorageOfTheDisabledFunction
console.log("Yeah! I'm back in play!")
console.log("I feel better.")

Итак, теперь fredomm-m предлагает попробовать:

<script>document.write = function(){}</script>
<script src="path-to-external-js"></script>