javascript - ¿Por qué usar document.write?
(9)
Este método evita cargar el script externo si el scripting activo está deshabilitado.
Me preguntaba por qué los anuncios todavía usan el enfoque document.write para insertar el complemento en la página.
<script language="javascript" type="text/javascript">
document.write("<script type=''text/javascript'' src=''http://addomain/someadd.js''><//sc" + "ript>");
</script>
¿Por qué es que no puedo simplemente ponerme
<script type=''text/javascript'' src=''http://addomain/someadd.js''></script>
En lugar del anuncio?
Hacer coincidir esto con expresiones regulares y eliminar es fácil:
<script type=''text/javascript'' src=''http://addomain/someadd.js''></script>
pero el otro es más complejo y puede escribirse en diferentes formatos.
Creo que esta es la razón.
Me corrigen, doc.write los scripts creados están bloqueando - peor de lo que hehem :) - pero como un adblock avoider es realmente débil, entonces solo puedo concluir que es un mecanismo SOP para agregar parámetros dinámicamente a una solicitud de script usada en exceso.
Use la técnica de inserción DOM cuando evite secuencias de comandos para niños.
No lo sé con certeza, pero podrían usarlo para que todo el contenido del sitio web se cargue y se muestre primero al usuario, luego se cargan y se muestran los anuncios.
Trabajo con una empresa de publicidad en la web, y por lo que he escuchado, ciertos navegadores (no sé cuáles) le permitirán colocar etiquetas de secuencia de comandos en la página, pero no le permitirán ejecutar automáticamente sus contenidos. .
Por lo tanto, para lograr esto, debe dividir la etiqueta de secuencia de comandos para que el navegador no la trate como una etiqueta de secuencia de comandos, sino como cualquier Dato HTML antiguo. Entonces, como el DOM se procesa en serie, lo siguiente que evalúa, después de escribir la etiqueta de script es ... hey, esa etiqueta de script que acaba de escribir.
En este punto, la etiqueta del script se evalúa y ejecuta.
En mi humilde opinión, eso no solo es inútil, sino incluso incorrecto. Los corchetes angulares no se escapan, lo que hace que el documento sea HTML técnicamente no válido (aunque funcionará en todos los navegadores principales, ya que intentan recuperarse de los errores de los programadores). Y en caso de que uno sirva su sitio con páginas XHMTL como application/xml+xhtml
, document.write()
simplemente no funcionará.
A menudo, estas secuencias de comandos inyectadas con document.write tienen cadenas dinámicas asociadas para eliminar el almacenamiento en caché o para enviar información sobre el cliente al servidor de anuncios. Sospecho que tu ejemplo comenzó como algo como esto
document.write("<script type=''text/javascript'' src=''http://addomain/someadd.js?"+extrastuff+"''><//sc" + "ript>");
pero se modificó con el tiempo, o fue copiado y modificado por alguien que no entendió la cantidad de material extra. Pero como lo has escrito, no hay diferencia: las dos formas en que citas en tu pregunta son funcionalmente iguales.
Una etiqueta de script tradicional bloqueará la página mientras se carga y ejecuta. Un script cargado con document.write funcionará de forma asíncrona. Es por eso que ve esto en anuncios o análisis, ya que dichos scripts no influyen directamente en el contenido de la página.
Una forma de hacer que sea algo menos probable que su complemento esté bloqueado.