ホームページ >ウェブフロントエンド >jsチュートリアル >jsファイルにパラメータを渡す(詳しく解説)_javascriptスキル
1. グローバル変数を使用する
これは Google Adsense などの最も簡単な方法です:
欠点は、グローバル変数が導入されることです。ファイルを導入する方法には 2 つの方法があります:
// 变体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> // 注意:上面的代码是根据实际应用虚拟的示范代码
注: バリアント 1 には多くの用途があります。一般的な記述方法は次のとおりです。
<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. スクリプト要素の src を取得して解析します
すべての変数と比較して、次のようなパラメーターを渡すことを好みます:13ae44ffe4aa4df7af013a12fb8158d82cacc6d41bbb37262a98f745aa00fbf0
中心的な問題は、src 属性を取得する方法です。
方法 1 は、スクリプトに id 属性を追加し、id を通じて現在のスクリプトを取得し、正規表現を使用して src からパラメータを抽出することです。欠点は、HTML 4.01 仕様では、SCRIPT 要素に id 属性がないことです。結局のところ、この欠点は欠点ではありません。標準がないよりも標準を信じる方が良いのです。
方法 2 は、js ファイル名をフックとして使用し、js コードで document.getElementsByTagName('script') を渡した後、現在の js ファイルを正規表現によって照合します。この方法は非常にオーソドックスですが、独自のファイル名が必要です。欠点は、コードが多く、洗練されておらず、パフォーマンスにわずかな影響を与えることです。
方法 3 は方法 1 に基づいており、単純にカスタム属性データを追加します。
94c14f1ae29f3592bfda9eb585dbd14b2cacc6d41bbb37262a98f745aa00fbf0
test.js ファイルで、次の行から受信パラメータを取得します:
var scriptArgs = document.getElementById('testScript').getAttribute('data'); 4 番目の方法は、js の順次実行メカニズムを使用することです (js ファイルは同期または非同期でロードできますが、実行するとドキュメント フローで順次実行される必要があります)。 js ファイルが実行されるときは、「読み込まれた」js ファイルの最後のものである必要があります:
var scripts = document.getElementsByTagName('script'); var currentScript = scripts[scripts.length - 1];方法 4 は方法 2 よりも賢くて天才的です。
コードの簡素化とパフォーマンスの点では、方法 3 > 方法 1 > 方法 2
要約: 標準を重視する場合は、方法 4 をお勧めします。私と同じように、標準に完全に準拠する必要を感じない場合は、方法 3 をお勧めします。
テストプログラムを書く
<!DOCTYPE html> <html> <script src="a2.js"> </script> <script src="a2.js"> </script> <script src="a2.js"> </script> </html>
var scripts = document.getElementsByTagName('script'); var currentScript = scripts.length;alert(currentScript);
別途印刷してください
1 2 3
3. インスピレーションプラン
あなたが私と同じように John Resig の忠実なファンなら、昨年 8 月に話題になった「スクリプトタグの劣化」をまだ覚えているかもしれません。 John Resig は私たちに想像力の扉を開きました。この記事の問題については、次のような「邪悪な方法」を使用して解決することもできます。ae47fa971796540d6040c77d18703721 TB.SomeApp.scriptArgs ='a=b&c=d';
test.js ファイル内:
TB = {}; TB.SomeApp = {}; var scripts = document.getElementsByTagName("script"); eval(scripts[ scripts.length - 1 ].innerHTML);
パラメータがあまりない場合は、次のようにすることもできます:
ae47fa971796540d6040c77d18703721a=b&c=d2cacc6d41bbb37262a98f745aa00fbf0
js ファイル内:
var scripts = document.getElementsByTagName("script"); var scriptArgs = scripts[ scripts.length - 1 ].innerHTML.replace(/[s]/g, '');
3959d0a17b69883088dd6228aa01b50a2cacc6d41bbb37262a98f745aa00fbf0
js ファイルで関数を定義するだけです:
TB = {}; TB.SomeFun = function(arg) { //code };
if(window.ActiveXObject) { var scripts = document.getElementsByTagName('script'); eval(scripts[scripts.length - 1].getAttribute('onload')); }