¿Hay una manera de interceptar `document.write`?
-
13-10-2019 - |
Pregunta
Estoy tratando de carga perezosa algún código servidor de anuncios ...
En la página que tengo esto en el momento:
<div class="ad">
<span>pos_1</span>
</div>
y luego ir a través y sacar todos los anuncios que deberían estar en la página, llame a su Archivo de inclusión JavaScript y me da este hermoso lío:
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;
}
}
Entonces quiero reemplazar el lapso con los resultados de la llamada document.write
anuncio.
¿Hay una manera de conseguir que vuelva la cadena que habría sido escrita a la página?
Solución
I don't see why you can't overwrite the document.write
function:
document.old_write = document.write;
document.write = function (str) {
// lalala
};
See here: http://www.jsfiddle.net/N9hXy/
Otros consejos
document.write = function(str) {
window.buf += str;
}
The do_ad(pos) function must be called somewhere. Why not where the ad should be displayed?
<div class="ad">
<script>do_ad("pos_1");</script>
</div>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow