Estoy tratando de detectar si el archivo actual Javascript que está siendo ejecutado se incluye de forma sincrónica (a través de una etiqueta de escritura regular)Cómo detectar si su Javascript está siendo incluido de forma sincrónica o asincrónica
<script src="myscript.js"></script>
o asincrónica a través de la inserción de una elemento de script en el DOM mediante programación, algo así como
var script = document.createElement('script')
script.src = 'myscript.js'
document.body.appendChild(script)
y en consecuencia, si document.write
se puede utilizar o no. He descubierto una solución loca que prueba si document.write
funciona, vea this gist.
Básicamente, funciona usando document.write
para escribir un elemento: elegí una etiqueta de script vacía. A continuación, consulta el DOM para determinar si ese elemento de script se escribió correctamente. Si lo fue, el script debe haberse incluido de forma síncrona, si no lo fue, se incluyó de forma asíncrona.
Esta solución funciona en todos los navegadores que he probado hasta el momento (todos los más importantes, incluido IE7 +) a excepción de Opera.
La pregunta es: ¿hay una solución mejor?
Nota: También he intentado comprobar document.readyState
, pero eso no parece ser útil en IE.
También tenga en cuenta: No necesito una conferencia que document.write
es malo. Lo sé.
Actualización: Resulta que además de no trabajar en la ópera, mi técnica también es poco fiable en algunos casos en IE y otros navegadores - document.write
puede o no funcionar dependiendo del momento o la situación de almacenamiento en caché. El spec parece decir tanto.
¿Estás seguro de que no necesitas la conferencia? Estaba todo listo para darle uno ...: P – Domenic