Rumah > hujung hadapan web > tutorial js > Menganalisis susunan penyemak imbas melaksanakan pemuatan skrip JavaScript dan kemahiran execution_javascript kod

Menganalisis susunan penyemak imbas melaksanakan pemuatan skrip JavaScript dan kemahiran execution_javascript kod

WBOY
Lepaskan: 2016-05-16 15:20:28
asal
1677 orang telah melayarinya

Artikel ini terutamanya berdasarkan beberapa cara untuk memperkenalkan JavaScript ke dalam halaman HTML, menganalisis susunan pelaksanaan skrip JavaScript dalam HTML

1. Berkenaan sifat menyekat pelaksanaan skrip JavaScript

JavaScript mempunyai ciri menyekat apabila ia dihuraikan dan dilaksanakan dalam penyemak imbas Maksudnya, apabila kod JavaScript dilaksanakan, penghuraian, pemaparan dan muat turun sumber lain mesti berhenti dan menunggu skrip selesai①. Ini tidak menimbulkan kontroversi dan tingkah laku adalah konsisten dalam semua penyemak imbas Sebabnya tidak sukar difahami: penyemak imbas memerlukan struktur DOM yang stabil dan JavaScript boleh mengubah suai DOM (menukar struktur DOM atau mengubah suai nod DOM tertentu), jika penghuraian halaman diteruskan semasa JavaScript sedang dilaksanakan, keseluruhan proses penghuraian akan menjadi sukar untuk dikawal, dan kemungkinan ralat penghuraian juga akan menjadi sangat tinggi.

Walau bagaimanapun, terdapat satu lagi isu yang memerlukan perhatian di sini Untuk skrip luaran, ia juga melibatkan proses muat turun skrip Dalam pelayar awal, muat turun fail JavaScript bukan sahaja menyekat penghuraian halaman, malah menyekat sumber lain pada halaman Muat Turun (termasuk fail skrip JavaScript lain, fail CSS luaran dan sumber luaran seperti imej). Bermula dari IE8, Firefox3.5, Safari4 dan Chrome2, muat turun selari JavaScript dibenarkan Pada masa yang sama, muat turun fail JavaScript tidak akan menyekat muat turun sumber lain (dalam versi lama, muat turun fail JavaScript juga akan disekat. memuat turun sumber lain).

Nota: Penyemak imbas yang berbeza mempunyai sekatan yang berbeza pada bilangan maksimum sambungan di bawah nama domain yang sama Keperluan dalam spesifikasi protokol HTTP1.1 ialah ia tidak boleh melebihi 2, tetapi kebanyakan penyemak imbas pada masa ini menyediakan bilangan maksimum sambungan. . Lebih daripada 2, IE6/7 kedua-duanya mempunyai 2, IE8 telah dinaik taraf kepada 6, firefox dan chrome juga mempunyai 6. Sudah tentu, tetapan ini juga boleh diubah suai, sila rujuk: http://. www.stevesouders.com/blog/2008/03/20/roundup-on-parallel-connections/

2. Mengenai perintah pelaksanaan skrip

Pelayar menghuraikan halaman mengikut tertib dari atas ke bawah, jadi dalam keadaan biasa, susunan pelaksanaan skrip JavaScript juga adalah dari atas ke bawah, iaitu kod yang muncul dahulu pada halaman atau kod yang diperkenalkan dahulu ialah sentiasa dilaksanakan terlebih dahulu, walaupun apabila muat turun selari fail JavaScript dibenarkan. Perhatikan bahawa kami telah menandai "dalam keadaan biasa" dengan warna merah di sini. Kami tahu bahawa terdapat banyak cara untuk menambah kod JavaScript pada HTML, yang diringkaskan seperti berikut (tanpa mengira pemuat modul seperti requirejs atau seajs):

(1) Pengenalan biasa: iaitu, memperkenalkan kod skrip atau memperkenalkan skrip luaran melalui teg

(2) Tulis teg atau kod ke halaman melalui kaedah document.write


(3) Melalui teknologi skrip dinamik, iaitu, menggunakan antara muka DOM untuk mencipta elemen


(4) Dapatkan kandungan skrip melalui Ajax, kemudian buat elemen


(5) Tulis kod JavaScript secara langsung dalam pengendali acara elemen atau secara langsung sebagai badan URL Contoh adalah seperti berikut:


<!--直接写在元素的事件处理程序中-->
<input type="button" value="点击测试一下" onclick="alert('点击了按钮')"/>
<!--作为URL的主体-->
<a href="javascript:alert('dd')">JS脚本作为URL的主体</a> 
Salin selepas log masuk
Kes kelima tidak memberi kesan pada perintah pelaksanaan skrip yang kami bincangkan, jadi kami hanya membincangkan empat kes pertama di sini:


2.1 Apabila memperkenalkan skrip seperti biasa

Apabila skrip biasanya diperkenalkan, kod JavaScript akan dilaksanakan dari atas ke bawah Tidak kira sama ada skrip itu dimuat turun secara selari, ia akan tetap dilaksanakan dari atas ke bawah mengikut urutan pengenalan DEMO sebagai contoh:


Pertama, tulis skrip melalui PHP Skrip ini menerima dua parameter, URL fail dan masa tunda Skrip akan menghantar kandungan fail ke penyemak imbas selepas masa tunda yang masuk


<&#63;php
$url = $_GET['url'];
$delay = $_GET['delay'];
if(isset($delay)){
sleep($delay);
}
echo file_get_contents($url);
&#63;> 
Salin selepas log masuk
Selain itu, kami juga telah mentakrifkan dua fail JavaScript, iaitu 1.js dan 2.js Dalam contoh ini, kod kedua-duanya adalah seperti berikut:


1.js

makluman("Saya skrip pertama");

2.js


makluman("Saya skrip kedua");

Kemudian, kami memperkenalkan kod skrip dalam HTML:


虽然第一个脚本延迟了3秒才会返回,但是在所有浏览器中,弹出的顺序也都是相同的,即:"我是第一个脚本"->"我是内部脚本"->"我是第二个脚本"

2.2 通过document.write向页面中写入脚本时

document.write在文档流没有关闭的情况下,会将内容写入脚本所在位置结束之后紧邻的位置,浏览器执行完当前短的代码,会接着解析document.write所写入的内容。

注:document.write写入内容的位置还存在一个问题,加入在内部的脚本中写入了标签内部不应该出现的内容,比如

等内容标签等,则这段内容的起始位置将是标签的起始位置。

通过document.write写入脚本时存在一些问题,需要分类进行说明:

[1]同一个

Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan