Como evitar document.write em um script externo
Quero evitar ou substituir o carregamento de document.write por meio de um script externo. aqui o link//lv.adocean.pl/files/js/aomini.js
Eu tentei isso (respondido por alguém) mas não adiantou.
document.write=function(s){
var scripts = document.getElementsByTagName('script');
var lastScript = scripts[scripts.length-1];
lastScript.insertAdjacentHTML("beforebegin", s);
}
Qualquer ideia?
Respostas
Vou tentar explicar a sugestão de @ freedomm-m, na esperança de ser claro.
Reatribuir document.write, que retorna uma função, a uma "função vazia" ... poderia ajudar a evitar a execução "normal" de document.write.
Por "função vazia" , quero dizer uma função totalmente válida, mas não fazendo estritamente nada.
Assim, após essa reatribuição, toda vez que a document.writefunção for chamada em qualquer lugar do documento, ao invés de executar a writefunção encontrada na documentpropriedade do objeto, ela executará aquela "função vazia" (leia-se: Nada).
Aqui está uma demonstração desse princípio aplicado à console.logfunção, apenas para mantê-lo simples e ser óbvio nesta demonstração aqui.
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... :( ")
Agora, para evitar "temporariamente" a execução de uma função, você tem que armazená-la em outra variável para "desfazer" a nova atribuição ...
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.")
Então, agora, o que fredomm-m sugeriu tentar é:
<script>document.write = function(){}</script>
<script src="path-to-external-js"></script>