Me gustaría saber por qué algunos sitios web (principalmente relacionados con los sitios de anuncios) siguen empleando la técnica de dividir las etiquetas <script>
y <script>
cuando las utilizan dentro de la instrucción document.write()
. Por ejemplo Amazon utilizaba un código parecido a lo siguiente:
<script type='text/javascript'> if (typeof window['jQuery'] == 'undefined') document.write('<scr'+'ipt type="text/javascript" src="http://z-ecx.images-amazon.com/images/G/01/javascripts/lib/jquery/jquery-1.2.6.pack._V265113567_.js"></sc'+'ript>'); </script>
Respuestas
El motivo es que estas etiquetas deben añadirse al navegador sin que antes sean interpretadas por este. Si por ejemplo añades la etiqueta de cierre </script>
dentro de una cadena, entonces el navegador pensará que el bloque de JavaScript termina en ese punto y no ejecutará el resto de código.
Además de dividir las etiquetas, otros programadores prefieren usar bloques de tipo CDATA
. Otra solución válida pero que casi nadie utiliza consiste en codificar el carácter <
de las etiquetas <script>
y </script>
que están dentro de document.write()
. Para ello, se puede usar la codificación \x3C
que es el equivalente en JavaScript del carácter <
. El resultado sería algo como lo siguiente:
<script type="text/javascript"> document.write('\x3Cscript type="text/javascript" src="archivo.js">\x3C/script>'); </script>
@librosweb