解決策:
1. まず、現在の JS ファイル の SRC 属性を取得します。ここでは、現在のページの最後のスクリプト タグのコンテンツを取得するだけで済みます。
なぜですか? ? JS は順番に解析されるため、現在の JS スクリプトが解析されると、次の JS はまだ解析されていないため、当然最後のスクリプトとみなされます。さらに、この方法で取得することにはもう 1 つの利点があります。同じファイルを複数回参照し、異なるパラメータを渡すことができるため、js ファイル内の異なるパラメータに従って異なる処理を実行できます。これは非常に賢い方法です。それは単なる動的言語です。
コードは次のとおりです:
var scripts=document.getElementsByTagName ("script");
var curJS=scripts[scripts.length-1] //curJS は現在の js ファイルです
これを取得するのは簡単です。 curJS.src を通じて完全なパスの内容 (パラメータを含む) を取得できます。
2. 解析パラメータの内容は、多くの人が簡単に完了できると思います。 しかし、特殊なケースに対処する必要があります。パラメータが複数回渡される場合、渡されるそれぞれの値を格納するには、パラメータ値を配列に変換する必要があります。
完全なテスト スクリプトは次のとおりです。
var getArgs=(function(){
var sc=document.getElementsByTagName('script');
var paramsArr=sc[sc.length-1].src.split ('?')[1 ].split('&');
var args={},argsStr=[],param,t,name,value;
for(var i=0,len= paramsArr.length;iparam=paramsArr[i].split('=');
name=param[0],value=param[1]; typeof args[name]== "unknown"){ //パラメータはまだ存在しません
args[name]=value;
}else if(typeof args[name]=="string"){ / /パラメータはすでに存在します。配列として保存します
args[name]=[args[name]]
args[name].push(value); //すでに配列です
args[name].push(value) ;
}
}
/*実際のアプリケーションでは、次の showArg と args.toString を削除できます。これは、によって返される内容をテストするためのものです。 the function getArgs*/
var showArg=function(x) { //異なるデータの表示モードを変換
if(typeof(x)=="string"&&!/d /.test(x)) return "'" x "'"; //String
if(x instanceof Array) return "[" x "]" //Array
return x; //Number
}
//json 形式にアセンブル
args.toString=function(){
for(var i in args) argsStr.push(i ':' showArg(args[i])); ' argsStr.join(',') '}';
}
return function(){return args;} //取得したパラメータをすべて json 形式で返します
})(); 🎜>alert(getArgs());
alert("username :" getArgs()["username"]);
テスト例の HTML ソース コード:
コードをコピー 新しいドキュメント
< ;script type="text/javascript" src="test.js?id=5&username= ajaxbbs&id=7&uid=253">
スクリプト ハウスのデモ コード
http: //demo.jb51.net/js/2011/jscc/