如何获取当前加载的脚本名称和脚本的url变量?

时间:2011-04-18 11:03:25

标签: javascript

我正在使用脚本嵌入标记加载脚本,我想在脚本中获取url变量和加载脚本名称。可能吗?例如,

<script src="test.js?id=12"></script>

在test.js里面有没有办法获取url变量id?

任何帮助都将不胜感激。

谢谢,
KARTHIK

4 个答案:

答案 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