如何获取javascript本身的查询字符串值?

时间:2013-04-02 14:40:00

标签: javascript

在mytest.html中我包含了这个:

<html><head>
<script type="text/javascript" src="/myjavascript.js?foo=bar"></script>
</head>
<body>Hi</body>
</html>

在myjavascript.js

alert(this.location.search);

这显示了查询字符串mytest.html,但我想要javascript本身的查询字符串“foo = bar”或只是“bar”。

关于如何做到这一点的任何想法都会很棒。 (我想也许我需要读取脚本元素的html并解析该文本。但我希望这是一种更简单的方法。)

如果有一个简单的方法,我也可以使用JQuery来做到这一点。

3 个答案:

答案 0 :(得分:1)

当脚本运行时,它是页面上加载的最后一件事。特别是,这也使它成为当前时间的最后一个脚本元素。

所以,考虑到这一点,试试这个:

var scripts = document.getElementsByTagName('script'),
    lastscriptsrc = scripts[scripts.length-1].getAttribute("src"),
    search = lastscriptsrc.substr(lastscriptsrc.indexOf("?"));

编辑:你也可以单行,但它的可读性较差:

var search = [].pop.apply(document.getElementsByTagName('script')).getAttribute("src").replace(/.*\?/,"");

答案 1 :(得分:0)

我接受了Kolink的回答。正如评论所指出的那样,我并非百分之百地确信它将是最后一个剧本(似乎有效)。所以下面更明确的是哪个脚本src。

以下是我使用Kolink回答的JQuery答案来帮助我:

var scriptsrc = $("script[src*='myjavascript']").attr("src");
var search = scriptsrc.substr(scriptsrc.indexOf("?"));
alert("search:" + search);

非常感谢您的帮助。

答案 2 :(得分:0)

试试这个

var qrStr = window.location.search;
var spQrStr = qrStr.substring(1);
var arr = new Array();
arr = spQrStr.split('&');
for (var i=0;i<arr.length;i++)
{
    var queryvalue = arr[i].split('=');
    alert("Name: "+queryvalue[0]+" Value: "+queryvalue[1]);
}