Est-il possible d'intercepter `document.write`?
-
13-10-2019 - |
Question
Je suis en train de charger un code paresseux adserver ...
Sur la page que j'ai ce au moment:
<div class="ad">
<span>pos_1</span>
</div>
Je puis passer et retirer toutes les annonces qui devraient être sur la page, appeler leur javascript include file et il me donne ce beau désordre:
function do_ad(pos){
switch(pos){
case 'pos_1':
document.write('first ad text');
document.write('first ad more text');
//and so on for many many lines
break;
case 'pos_2':
document.write('second ad text');
document.write('second ad more text');
//and so on for many many lines
break;
}
}
Je veux alors remplacer la portée des résultats de l'appel ad document.write
.
Est-il possible de l'obtenir pour retourner la chaîne qui aurait été écrit à la page?
La solution
Je ne vois pas pourquoi vous ne pouvez pas remplacer la fonction document.write
:
document.old_write = document.write;
document.write = function (str) {
// lalala
};
Voir ici: http://www.jsfiddle.net/N9hXy/
Autres conseils
document.write = function(str) {
window.buf += str;
}
La fonction do_ad (pos) doit être appelée quelque part. Pourquoi ne pas où l'annonce doit être affichée?
<div class="ad">
<script>do_ad("pos_1");</script>
</div>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow