1. Gunakan pembolehubah global
Ini adalah cara paling mudah, seperti Google Adsense:
Kelemahannya ialah pembolehubah global diperkenalkan. Terdapat dua varian cara memperkenalkan fail:
// 变体1:用document.write输出 <script type="text/javascript"> google_ga_id ='g6u7un8646xx'; document.write(unescape('%3Cscript type="text/javascript" src= "http://www.m.sbmmt.com/ga.js"%3E%3C/script%3E')); </script> // 变体2:用DOM操作append到head里 <script type="text/javascript"> G_BEACON_ATP ='category=&userid=&channel=112ad_id='; document.getElementsByTagName('head')[0].appendChild(document. createElement('script')).src='http://taobao.com/atp.js'; </script> // 注意:上面的代码是根据实际应用虚拟的示范代码
Nota: Varian 1 mempunyai banyak aplikasi Kaedah penulisan biasa adalah seperti berikut:
<script type="text/javascript"> // 直接转义即可: document.write('<script type="text/javascript" src="test.js"></script>'); // 或者像Yahoo!首页一样: document.write('<scr'+'ipt type="text/javascript" src="test.js"></scr'+'ipt>'); </script>
2. Dapatkan dan huraikan src elemen skrip
Berbanding dengan semua pembolehubah, kami lebih suka memasukkan parameter seperti berikut:
Masalah utama ialah cara mendapatkan atribut src.
Kaedah pertama ialah menambah atribut id pada skrip, dapatkan skrip semasa melalui id, dan kemudian gunakan ungkapan biasa untuk mengekstrak parameter daripada src. Kelemahannya ialah dalam Spesifikasi HTML 4.01, elemen SCRIPT tidak mempunyai atribut id. Kekurangan ini bukan kekurangan Lagipun, lebih baik percaya pada piawaian daripada tidak mempunyai piawaian.
Kaedah 2 ialah menggunakan nama fail js sebagai cangkuk Selepas menghantar document.getElementsByTagName('script') dalam kod js, fail js semasa akan dipadankan dengan ungkapan biasa. Kaedah ini sangat ortodoks, tetapi memerlukan nama fail yang unik. Kelemahannya ialah terdapat banyak kod, ia tidak diperhalusi, dan ia mempunyai sedikit kesan terhadap prestasi.
Kaedah tiga adalah berdasarkan kaedah satu, cuma tambah data atribut tersuai:
Dalam fail test.js, dapatkan parameter masuk melalui baris berikut:
var scriptArgs = document.getElementById('testScript').getAttribute('data'); Kaedah keempat ialah menggunakan mekanisme pelaksanaan berurutan bagi js (fail js boleh dimuatkan secara serentak atau tidak segerak, tetapi apabila dilaksanakan, ia mesti mengikut dilaksanakan secara berurutan dalam aliran dokumen). Apabila fail js dilaksanakan, ia mestilah yang terakhir antara fail js yang "dimuatkan":
skrip var = document.getElementsByTagName('script'); var currentScript = scripts[scripts.length - 1];Kaedah 4 lebih bijak dan genius daripada kaedah 2.
Dari segi penyederhanaan kod dan prestasi, kaedah tiga >
Ringkasan: Jika anda mengambil berat tentang piawaian, kami mengesyorkan kaedah empat; jika, seperti saya, anda tidak merasakan keperluan untuk mematuhi piawaian sepenuhnya, kami mengesyorkan kaedah tiga.
Tulis program ujian
<!DOCTYPE html> <html> <script src="a2.js"> </script> <script src="a2.js"> </script> <script src="a2.js"> </script> </html>
skrip var = document.getElementsByTagName('script'); var currentScript = scripts.length;alert(currentScript);
Cetak secara berasingan
1 2 3
3. Pelan Inspirasi
Jika anda peminat setia John Resig seperti saya, anda mungkin masih ingat "Tag Skrip Merendahkan" yang sangat diperkatakan pada Ogos tahun lalu. John Resig membuka pintu imaginasi untuk kita Untuk masalah artikel ini, kita juga boleh menggunakan "cara jahat" berikut untuk menyelesaikannya:
Dalam fail js:
var scripts = document.getElementsByTagName("script"); var scriptArgs = scripts[ scripts.length - 1 ].innerHTML.replace(/[s]/g, '');
Hanya tentukan fungsi dalam fail js:
TB = {}; TB.SomeFun = function(arg) { //code };