Как избежать document.write во внешнем скрипте
Я хочу избежать или заменить загрузку 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);
}
Есть идеи?
Ответы
Я постараюсь объяснить предложение @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>