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
<!--直接写在元素的事件处理程序中--> <input type="button" value="点击测试一下" onclick="alert('点击了按钮')"/> <!--作为URL的主体--> <a href="javascript:alert('dd')">JS脚本作为URL的主体</a>
2.1 Apabila memperkenalkan skrip seperti biasa
<?php $url = $_GET['url']; $delay = $_GET['delay']; if(isset($delay)){ sleep($delay); } echo file_get_contents($url); ?>
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]同一个