1. Memanfaatkan variabel global
Ini adalah cara termudah, seperti Google AdSense:
Salinan kode adalah sebagai berikut:
<script type = "text/javascript"> google_ad_client = 'pub-3741595817388494'; </script> <script type = "text/javascript" src = "http: // pagead2. googlesyndication.com/pagead/show_ads.js"> </script>
Kerugiannya adalah bahwa variabel global diperkenalkan. Ada dua varian lain cara untuk memperkenalkan file:
// Variasi 1: Gunakan Document.Write ke Output <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> // Variasi 2: Gunakan DOM untuk diterapkan ke head <script type = "text/javascript"> g_beacon_atp = 'Category = & userid = & channel = 112Ad_id ='; document.geteLementsbyTagname ('head') [0] .AppendChild (Dokumen. CreateElement ('Script')) .src = 'http: //taobao.com/atp.js'; </script> // Catatan: Kode di atas adalah kode demonstrasi virtual berdasarkan aplikasi aktualCatatan: Varietas 1 digunakan berkali -kali, dan metode penulisan umum adalah sebagai berikut:
<script type = "text/javaScript"> // Escape Langsung: Document.write ('<script type = "Text/JavaScript" src = "test.js"> </script>'); // atau seperti Yahoo! Beranda: Document.write ('<scr'+'ept type = "Text/JavaScript" src = "test.js"> </scr'+'pt>'); </script>2. Dapatkan dan parsing SRC dari elemen skrip
Dibandingkan dengan semua variabel, kami lebih suka melewati parameter seperti berikut:
<type script = "Text/JavaScript" src = "test.js? A = B & C = D"> </script>
Masalah inti adalah bagaimana mendapatkan atribut SRC.
Metode pertama adalah menambahkan atribut ID ke skrip, dapatkan skrip saat ini melalui ID, dan kemudian gunakan reguler untuk menghapus parameter dari SRC. Kerugiannya adalah bahwa dalam spesifikasi HTML 4.01, elemen skrip tidak memiliki atribut ID. Lagipula, kekurangan ini tidak dapat dianggap sebagai kekurangan, lebih baik tidak memiliki standar daripada percaya pada standar.
Metode kedua adalah menggunakan nama file JS sebagai pengait. Setelah melewati Document.GetElementsByTagname ('Script') dalam kode JS, file JS saat ini akan dicocokkan secara teratur. Metode ini ortodoks, tetapi membutuhkan nama file yang unik. Kerugiannya adalah bahwa ada banyak kode dan tidak disempurnakan, yang akan memiliki sedikit dampak pada kinerja.
Metode 3 adalah menambahkan data atribut khusus berdasarkan metode 1:
<skrip id = "testscript" type = "text/javaScript" src = "test.js" data = "a = b & c = d"> </skrip>
Dalam file test.js, gunakan baris berikut untuk mendapatkan parameter yang dilewatkan:
var scriptArgs = document.getElementById ('testscript'). getAttribute ('data'); Metode 4 adalah menggunakan mekanisme eksekusi berurutan JS (pemuatan file JS dapat sinkron atau asinkron, tetapi ketika dieksekusi, itu harus dieksekusi dalam urutan dalam aliran dokumen). Ketika file JS tertentu dieksekusi, itu harus menjadi yang terakhir dalam file JS "dimuat":
var skrip = document.geteLementsbyTagname ('skrip'); var currentscript = skrip [scripts.length - 1]; Metode 4 lebih pintar dan jenius daripada Metode 2.
Dari perspektif Penyederhanaan dan Kinerja Kode, Metode 3> Metode 1> Metode 4> Metode 2
Ringkasan: Jika Anda sangat peduli dengan standar, merekomendasikan Metode 4; Jika Anda merasa tidak perlu untuk sepenuhnya mematuhi standar seperti saya, rekomendasikan Metode 3.
Tulis Program Uji
<! Doctype html> <html> <script src = "a2.js"> </script> <script src = "a2.js"> </script> <script src = "a2.js"> </script> <script src = "a2.js"> </script> </html>
a2.js
var skrip = document.geteLementsbyTagname ('skrip'); var currentscript = scripts.length; alert (currentscript);
Cetak secara terpisah
1 2 3
3. Rencana Inspirasi
Jika Anda adalah penggemar setia John Resig seperti saya, mungkin Anda masih ingat "tag skrip yang merosot" yang sangat banyak dibahas Agustus lalu. John Resig membuka pintu imajiner bagi kami. Untuk pertanyaan dalam artikel ini, kita juga dapat menggunakan "jalan jahat" berikut untuk mencapainya:
<type skrip = "Text/JavaScript" src = "test.js"> tb.someApp.scriptArgs = 'a = b & c = d'; </script>
Di file test.js:
Tb = {}; Tb.someApp = {}; var skrip = document.geteLementsByTagname ("skrip"); eval (skrip [skrips.length - 1] .innerHtml);Ini menyimpan parameter dalam variabel tb.someApp.scriptArgs.
Ketika tidak ada banyak parameter, Anda bahkan dapat melakukan ini:
<script type = "text/javaScript" src = "test.js"> a = b & c = d </script>
Di file JS:
var skrip = document.geteLementsbyTagname ("skrip"); var scriptArgs = skrip [scripts.length - 1] .innerHtml.replace (/[s]/g, '');Imajinasi tidak ada habisnya, Anda juga dapat menggunakan Onload:
<type script = "Text/JavaScript" src = "test.js" onload = "tb.somefun ('a = b & c = d')"> </script>
Cukup tentukan fungsi dalam file JS:
Tb = {}; Tb.somefun = function (arg) {// code};Kode di atas dapat berjalan dengan benar di browser non-IE. Untuk IE bodoh, Anda harus menambahkan beberapa baris kode:
if (window.activexObject) {var scripts = document.geteLementsbyTagname ('skrip'); eval (skrip [scripts.length - 1] .getAttribute ('onload'));}