0

在 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 来执行此操作。

4

3 回答 3

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(/.*\?/,"");
于 2013-04-02T14:42:22.033 回答
0

我接受了 Kolink 的回答。正如评论所指出的,我不是 100% 相信这将是最后一个脚本(似乎有效)。所以下面更明确地说明了哪个脚本 src。

这是我使用 Kolink 回答来帮助我的 JQuery 回答:

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

非常感谢你在这方面的帮助。

于 2013-04-02T15:28:58.800 回答
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]);
}
于 2013-05-16T10:59:01.077 回答