Como evitar document.write em um script externo

Oct 24 2020

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

2 LouysPatriceBessette Oct 24 2020 at 18:03

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>