1. Cara menyematkan Javascript ke HTML adalah dengan langsung menempatkan kode Javascript di antara pasangan tag <script> dan </script>. Gunakan atribut src dari tag <script /> untuk merumuskan file js eksternal dan menempatkannya di dalamnya pengendali kejadian, seperti: <p onclick="alert('Saya adalah Javascript yang dieksekusi oleh kejadian onclick')">Klik saya</p>
Sebagai isi URL, URL ini menggunakan protokol Javascript: khusus, seperti: <a href="javascript:alert('Saya adalah javascript yang dijalankan oleh javascript: protokol')">Klik saya</a>
Gunakan metode javascript document.write() itu sendiri untuk menulis kode javascript baru. Gunakan Ajax untuk mendapatkan kode javascript secara asinkron, lalu jalankan
metode ke-3 dan ke-4. Javascript tertulis perlu dipicu sebelum dapat dieksekusi, jadi kecuali itu diatur secara khusus, halaman tidak akan dieksekusi.
2. Urutan eksekusi Javascript pada halaman Kode Javascript pada halaman merupakan bagian dari dokumen HTML, sehingga urutan eksekusi Javascript pada saat halaman dimuat adalah urutan kemunculan tag pengantar <script />. . Dalam tag <script /> atau melalui src JS eksternal yang diimpor dijalankan sesuai urutan kemunculan pernyataannya, dan proses eksekusi merupakan bagian dari pemuatan dokumen.
Variabel dan fungsi global yang ditentukan oleh setiap skrip dapat dipanggil oleh skrip yang dijalankan kemudian.
Pemanggilan variabel harus sudah dideklarasikan sebelumnya, jika tidak, nilai variabel yang diperoleh tidak akan terdefinisi.
<skrip type="teks/javscrpt">//<![CDATA[
peringatan(tmp); //keluaran tidak ditentukan
var tmp = 1;
peringatan(tmp); //keluaran 1
//]]></skrip>
Dalam skrip yang sama, definisi fungsi dapat muncul setelah pemanggilan fungsi. Namun, jika ada dalam dua bagian kode dan pemanggilan fungsi ada di bagian pertama kode, kesalahan fungsi yang tidak ditentukan akan dilaporkan.
<skrip type="teks/javscrpt">//<![CDATA[
aa(); //kesalahan peramban
//]]></skrip>
<skrip type="teks/javscrpt">//<![CDATA[
aa(); //Keluaran 1
fungsi aa(){peringatan(1);}
//]]></skrip>
document.write() akan menulis output ke lokasi dokumen skrip. Setelah browser mengurai konten dokumen di mana documemt.write() berada, browser akan terus mengurai output konten berdasarkan document.write(), dan kemudian melanjutkan untuk mengurai dokumen HTML.
<skrip type="teks/javascript">//<![CDATA[
document.write('<script type="text/javascript" src="test.js"></script>');
document.write('<script type="text/javascript">');
dokumen.tulis('peringatan(2);')
document.write('alert("Saya" + tmpStr);');
dokumen.write('</script>');
//]]></skrip>
<skrip type="teks/javascript">//<![CDATA[
peringatan(3);
//]]></skrip>
Isi dari test.js adalah:
var tmpStr = 1;
peringatan(tmpStr);
Urutan nilai popup di Firefox dan Opera adalah: 1, 2, Saya 1, 3
Urutan nilai pop-up di IE adalah: 2, 1, 3. Pada saat yang sama, browser melaporkan kesalahan: tmpStr tidak terdefinisi. Alasannya mungkin karena IE tidak menunggu kode Javascript di SRC dimuat sebelum mengeksekusi baris berikutnya ketika document.write. Oleh karena itu, 2 muncul terlebih dahulu, dan ketika document.write('document.write("I am" + tmpStr)') dijalankan dan tmpStr dipanggil, tmpStr tidak ditentukan , mengakibatkan kesalahan.
Untuk mengatasi masalah ini, Anda dapat menggunakan prinsip penguraian HTML untuk mengurai satu tag HTML dan kemudian mengeksekusi tag berikutnya, dan membagi kode untuk mencapai hal ini:
<script type="text/javascript">//<![CDATA[
document.write('<script type="text/javascript" src="test.js"></script>');
//]]></skrip>
<skrip type="teks/javascript">//<![CDATA[
document.write('<script type="text/javascript">');
dokumen.tulis('peringatan(2);')
document.write('alert("Saya" + tmpStr);');
dokumen.write('</script>');
//]]></skrip>
<skrip type="teks/javascript">//<![CDATA[
peringatan(3);
//]]></skrip>
Dengan cara ini, urutan nilai keluaran di IE dan browser lain konsisten: 1, 2, I am 1, 3.
3. Cara mengubah urutan eksekusi Javascript pada halaman menggunakan onload
<skrip type="teks/javascript">//<![CDATA[
jendela.onload = f;
fungsi f(){peringatan(1);}
peringatan(2);
//]]></skrip>
Urutan nilai keluarannya adalah 2, 1.
Perlu dicatat bahwa jika ada beberapa winodws.onload, hanya yang paling efektif yang akan berlaku. Solusinya adalah:
window.onload = function(){f();f1();f2();.... .
Memanfaatkan tipe peristiwa DOM level 2
if(document.addEventListener){
window.addEventListener('beban',f,false);
window.addEventListener('beban',f1,false);
...
}kalau tidak{
window.attachEvent('onload',f);
window.attachEvent('onload',f1);
...
}
Defer dapat digunakan di IE. Fungsi defer adalah untuk memuat kode dan tidak langsung mengeksekusinya. Ini akan dieksekusi setelah dokumen dimuat .onload. Dapat digunakan berulang kali, tetapi hanya valid di IE, sehingga contoh di atas dapat dimodifikasi
<skrip type="teks/javascript">//<![CDATA[
document.write('<script type="text/javascript" src="test.js"></script>');
document.write('<script type="text/javascript" defer="defer">');
dokumen.tulis('peringatan(2);')
document.write('alert("Saya" + tmpStr);');
dokumen.write('</script>');
//]]></skrip>
<skrip type="teks/javascript">//<![CDATA[
peringatan(3);
//]]></skrip>
Dengan cara ini, IE tidak akan melaporkan kesalahan, dan urutan nilai keluaran menjadi: 1, 3, 2, Saya 1.
Ketika pengurai HTML menemukan skrip, ia harus menghentikan penguraian dokumen seperti biasa dan tunggu skrip dijalankan. Untuk mengatasi masalah ini, standar HTML4 mendefinisikan defer. Gunakan defer untuk meminta browser melanjutkan penguraian dokumen HTML dan menunda eksekusi skrip. Penundaan ini sangat berguna ketika skrip dimuat dari file eksternal, sehingga browser tidak perlu menunggu semua file eksternal dimuat sebelum melanjutkan eksekusi, yang secara efektif dapat meningkatkan kinerja. IE saat ini merupakan satu-satunya browser yang mendukung atribut defer, namun IE tidak mengimplementasikan atribut defer dengan benar karena skrip yang tertunda selalu ditunda hingga akhir dokumen, bukan hanya ditunda ke skrip yang tidak tertunda berikutnya. Ini berarti urutan eksekusi skrip yang tertunda di IE cukup membingungkan, dan fungsi serta variabel apa pun yang tidak diperlukan oleh skrip yang tidak tertunda berikutnya tidak dapat ditentukan. Waktu eksekusi semua skrip penangguhan di IE harus setelah pohon dokumen HTML dibuat dan sebelum window.onload.
Manfaatkan Ajax.
Karena xmlhttpRequest dapat menentukan status pemuatan dokumen eksternal, xmlhttpRequest dapat mengubah urutan pemuatan kode.