Rumah  >  Artikel  >  hujung hadapan web  >  Menghantar parameter ke fail js (penjelasan terperinci)_kemahiran javascript

Menghantar parameter ke fail js (penjelasan terperinci)_kemahiran javascript

WBOY
WBOYasal
2016-05-16 16:42:071533semak imbas

1. Gunakan pembolehubah global

Ini adalah cara paling mudah, seperti Google Adsense:

Salin kod Kod adalah seperti berikut:

4ec11beb6c39d0703d1751d203c17053 google_ad_client ='pub-3741595817388494'; 3af896bf38fa26b1c3d2d831281b92932cacc6d41bbb37262a98f745aa00fbf0

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.google-analytics.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:

13ae44ffe4aa4df7af013a12fb8158d82cacc6d41bbb37262a98f745aa00fbf0

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:

94c14f1ae29f3592bfda9eb585dbd14b2cacc6d41bbb37262a98f745aa00fbf0

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>

a2.js

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:

ae47fa971796540d6040c77d18703721 TB.SomeApp.scriptArgs ='a=b&c=d';

Dalam fail test.js:

TB = {}; TB.SomeApp = {}; 
var scripts = document.getElementsByTagName("script");
eval(scripts[ scripts.length - 1 ].innerHTML);

Dengan cara ini, parameter disimpan dalam pembolehubah TB.SomeApp.scriptArgs.

Apabila tidak ada banyak parameter, anda juga boleh melakukan ini:

ae47fa971796540d6040c77d18703721a=b&c=d2cacc6d41bbb37262a98f745aa00fbf0

Dalam fail js:

var scripts = document.getElementsByTagName("script"); 
var scriptArgs = scripts[ scripts.length - 1 ].innerHTML.replace(/[s]/g, '');

Imaginasi tidak berkesudahan, anda juga boleh menggunakan onload:

3959d0a17b69883088dd6228aa01b50a2cacc6d41bbb37262a98f745aa00fbf0

Hanya tentukan fungsi dalam fail js:

TB = {}; 
TB.SomeFun = function(arg) { 
//code
};

Kod di atas boleh dijalankan dengan betul dalam pelayar bukan IE. Untuk IE bodoh, anda perlu menambah beberapa baris kod:

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn