1. El método para incrustar Javascript en HTML es colocar directamente el código Javascript entre el par de etiquetas <script> y </script>. Utilice el atributo src de la etiqueta <script /> para formular un archivo js externo y colocarlo. el controlador de eventos, como por ejemplo: <p onclick="alert('Soy el Javascript ejecutado por el evento onclick')">Haz clic en mí</p>
Como cuerpo de la URL, esta URL utiliza el protocolo especial Javascript:, como por ejemplo: <a href="javascript:alert('Soy un javascript ejecutado por el protocolo javascript:')">Haz clic en mí</a>
Utilice el método document.write () del propio javascript para escribir nuevo código javascript. Utilice Ajax para obtener el código javascript de forma asincrónica y luego ejecute
los métodos tercero y cuarto. El Javascript escrito debe activarse antes de poder ejecutarse, a menos que. está especialmente configurado, la página se cargará no se ejecutará.
2. El orden de ejecución de Javascript en la página El código Javascript en la página es parte del documento HTML, por lo que el orden en que se ejecuta Javascript cuando se carga la página es el orden en que aparece la etiqueta de introducción <script />. En la etiqueta <script /> o mediante src, el JS externo importado se ejecuta en el orden en que aparecen sus declaraciones y el proceso de ejecución es parte de la carga del documento.
Las variables globales y funciones definidas por cada script pueden ser invocadas por scripts ejecutados posteriormente.
La llamada a la variable debe haber sido declarada previamente, de lo contrario el valor de la variable obtenido será indefinido.
<script type="text/javscrpt">//<![CDATA[
alerta(tmp); //salida indefinida
vartmp = 1;
alerta(tmp); //salida 1
//]]></script>
En el mismo script, la definición de la función puede aparecer después de la llamada a la función. Sin embargo, si está en dos fragmentos de código y la llamada a la función está en el primer fragmento de código, se informará un error de función no definida.
<script type="text/javscrpt">//<![CDATA[
aa(); //Error del navegador
//]]></script>
<script type="text/javscrpt">//<![CDATA[
aa(); //Salida 1
función aa(){alerta(1);}
//]]></script>
document.write() escribirá la salida en la ubicación del documento del script. Después de que el navegador analice el contenido del documento donde se encuentra documemt.write(), continuará analizando la salida del contenido mediante document.write(). y luego continúe analizando el documento HTML.
<script type="text/javascript">//<![CDATA[
document.write('<script type="text/javascript" src="test.js"></script>');
document.write('<script type="text/javascript">');
documento.write('alerta(2);')
document.write('alert("Yo soy" + tmpStr);');
document.write('</script>');
//]]></script>
<script type="text/javascript">//<![CDATA[
alerta(3);
//]]></script>
El contenido de test.js es:
var tmpStr = 1;
alerta(tmpStr);
El orden de los valores emergentes en Firefox y Opera es: 1, 2, soy 1, 3
El orden de los valores emergentes en IE es: 2, 1, 3. Al mismo tiempo, el navegador informa un error: tmpStr no está definido. La razón puede ser que IE no espera a que se envíe el código Javascript en SRC. se cargará antes de ejecutar la siguiente línea cuando document.write Por lo tanto, 2 aparece primero, y cuando se ejecuta document.write('document.write("I am" + tmpStr)') y se llama a tmpStr, tmpStr no está definido. , lo que genera un error.
Para resolver este problema, puede utilizar el principio de análisis HTML para analizar una etiqueta HTML y luego ejecutar la siguiente, y dividir el código para lograr esto:
<script type="text/javascript">//<![CDATA[
document.write('<script type="text/javascript" src="test.js"></script>');
//]]></script>
<script type="text/javascript">//<![CDATA[
document.write('<script type="text/javascript">');
documento.write('alerta(2);')
document.write('alert("Yo soy" + tmpStr);');
document.write('</script>');
//]]></script>
<script type="text/javascript">//<![CDATA[
alerta(3);
//]]></script>
De esta manera, el orden de los valores de salida en IE y otros navegadores es el mismo: 1, 2, soy 1, 3.
3. Cómo cambiar el orden de ejecución de Javascript en la página usando onload
<script type="text/javascript">//<![CDATA[
ventana.onload = f;
función f(){alerta(1);}
alerta(2);
//]]></script>
El orden de los valores de salida es 2, 1.
Cabe señalar que si hay varios winodws.onload, solo el más efectivo tendrá efecto. La solución es:
window.onload = function(){f();f1();f2();.... }
Utilizando tipos de eventos DOM de nivel 2
if(document.addEventListener){
ventana.addEventListener('cargar',f,false);
ventana.addEventListener('cargar',f1,falso);
...
}demás{
ventana.attachEvent('onload',f);
ventana.attachEvent('onload',f1);
...
}
Defer se puede utilizar en IE. La función de aplazar es cargar el código y no ejecutarlo inmediatamente. Se ejecutará después de cargar el documento. Es algo similar a window.onload, pero no tiene las limitaciones de window. .onload Se puede usar repetidamente, pero solo es válido en IE, por lo que el ejemplo anterior se puede modificar para.
<script type="text/javascript">//<![CDATA[
document.write('<script type="text/javascript" src="test.js"></script>');
document.write('<script type="text/javascript" aplazar="aplazar">');
documento.write('alerta(2);')
document.write('alert("Yo soy" + tmpStr);');
document.write('</script>');
//]]></script>
<script type="text/javascript">//<![CDATA[
alerta(3);
//]]></script>
De esta manera, IE no informará un error y el orden de los valores de salida será: 1, 3, 2, soy 1.
Cuando el analizador HTML encuentra un script, debe finalizar el análisis del documento como de costumbre y espere a que se ejecute el script. Para solucionar este problema, el estándar HTML4 define aplazar. Utilice diferir para solicitar al navegador que continúe analizando el documento HTML y retrase la ejecución del script. Este retraso es muy útil cuando se carga un script desde un archivo externo, de modo que el navegador no tiene que esperar a que se carguen todos los archivos externos antes de continuar con la ejecución, lo que puede mejorar efectivamente el rendimiento. Actualmente, IE es el único navegador que admite el atributo aplazar, pero IE no implementa el atributo aplazar correctamente porque los scripts retrasados siempre se retrasan hasta el final del documento, en lugar de retrasarse solo hasta el siguiente script no retrasado. Esto significa que el orden de ejecución de los scripts retrasados en IE es bastante confuso y no se pueden definir las funciones y variables que no sean necesarias para los scripts posteriores no retrasados. El tiempo de ejecución de todos los scripts diferidos en IE debe ser posterior a que se establezca el árbol del documento HTML y antes de window.onload.
Aprovecha el Ajax.
Debido a que xmlhttpRequest puede determinar el estado de carga de documentos externos, puede cambiar el orden de carga del código.