Cómo evitar document.write en un script externo

Oct 24 2020

Quiero evitar o reemplazar la carga de document.write a través de un script externo. aquí el enlace//lv.adocean.pl/files/js/aomini.js

Intenté esto (respondido por alguien) pero no ayudó.

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

¿Alguna idea?

Respuestas

2 LouysPatriceBessette Oct 24 2020 at 18:03

Intentaré explicar la sugerencia de @ freedomm-m, con la esperanza de ser clara.

Reasignar document.write, que devuelve una función, a una "función vacía" ... podría hacer el truco para evitar la ejecución "normal" de document.write.

Por "función vacía" , me refiero a una función totalmente válida, pero que no hace estrictamente nada.

Entonces, después de esa reasignación, cada vez document.writeque se llame a la función en cualquier lugar del documento, en lugar de ejecutar la writefunción que se encuentra bajo la documentpropiedad del objeto, ejecutará esa "función vacía" (leer: Nada).

Aquí hay una demostración de ese principio aplicado a la console.logfunción, solo para mantenerlo simple y ser obvio en esta demostración aquí.

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... :( ")

Ahora, para evitar "temporalmente" la ejecución de una función, debe almacenarla en otra variable para "deshacer" la reasignación ...

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.")

Así que ahora, lo que fredomm-m sugirió probar es:

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