Comment éviter document.write dans un script externe

Oct 24 2020

Je souhaite éviter ou remplacer le chargement de document.write via un script externe. ici le lien//lv.adocean.pl/files/js/aomini.js

J'ai essayé ceci (répondu par quelqu'un) mais cela n'a pas aidé.

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

Une idée?

Réponses

2 LouysPatriceBessette Oct 24 2020 at 18:03

Je vais essayer d'expliquer la suggestion de @ Freedomm-m, dans l'espoir d'être clair.

Réassigner document.write, qui retourne une fonction, à une "fonction vide" ... pourrait faire l'affaire pour éviter l'exécution "normale" de document.write.

Par "fonction vide" , j'entends une fonction totalement valide, mais ne faisant strictement rien.

Donc après cette réaffectation, à chaque fois que la document.writefonction sera appelée n'importe où dans le document, au lieu d'exécuter la writefonction trouvée sous la documentpropriété de l' objet, elle exécutera cette "fonction vide" (lire: Rien).

Voici une démo de ce principe appliqué sur la console.logfonction, juste pour rester simple et être évident dans cette démo ici.

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

Maintenant, pour éviter "temporairement" une exécution de fonction, il faut la stocker dans une autre variable afin de "défaire" la ré-affectation ...

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

Alors maintenant, ce que fredomm-m a suggéré d'essayer est:

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