我正在使用脚本嵌入标记加载脚本,我想在脚本中获取url变量和加载脚本名称。可能吗?例如,
<script src="test.js?id=12"></script>
在test.js里面有没有办法获取url变量id?
任何帮助都将不胜感激。
谢谢,
KARTHIK
答案 0 :(得分:4)
除了链接帖子中的答案,FWIW只能使用Firefox 4(有警告); document.currentScript.src
将返回完整的网址,包括参数。
答案 1 :(得分:2)
感谢您所做的所有努力,通过在脚本标记中分配id属性并通过jQuery访问,
<script src="test.js?id=12" id="myScript"></script>
var currentScript = $("#myScript").attr('src'); //This will give me my script src
谢谢,
KARTHIK
答案 2 :(得分:1)
如果您想从当前网址获取变量,可以使用:
function queryParser(url){
this.get=function(p){return this.q[p];}
this.q={};
this.map=function(url){
url=url || window.location.search.substring(1);
var url=url.split('&');
var part;
for(var i=0;i<url.length;i++){
part=url[i].split('=');
this.q[part[0]]=part[1];
}
}
this.map(url);
}
var query=new queryParser();
// assuming you have ?test=something
alert(query.get('test'));
我建议您映射结果,这样您就不会在想要查找特定元素时重新解析。
我真的不知道你为什么要在这样的脚本标签中传递查询字符串,除非你特别希望off-site包含一个简单强大的系统用于各种效果。或者实际上是使用PHP来处理该请求。
如果要将变量“发送”到其中一个脚本,可以随时执行:
<script type="text/javascript">
var myVar="I'm in global scope, all scripts can access me";
</script>
<script src="test.js?id=12"></script>
如果您确实需要获取当前包含的脚本的URL,您可以在其他答案中使用我的同行提供的代码,然后您可以使用:
var query=new queryParser(scriptURL);
alert(query.get('id'));// would alert 12 in your case
答案 3 :(得分:0)
浏览评论链接即可获得正确答案。 无论如何,为了让事情变得更容易:
var allScripts=document.getElementsByTagName('script');
var indexLastScript= allScripts.length -1;
alert (allScripts[indexLastScript].src);
这会将“test.js?id = 12”显示为常规字符串,因此您可以将其拆分以获得de param。
希望它有所帮助,我在Chrome Javascript控制台上试用了它。 :d