示例:假设当前页面url(window.location.href)为http://example.com/page.html html页面源代码是......
<html><head></head><body>
<script src="http://example.com/script.js?user=Ankit&ptid=18"></script>
</body></html>
现在我需要在script.js中使用'src'变量 并且脚本文件script.js应该返回
var a="Ankit"
var b="18"
我们可以像php一样使用echo $ _GET吗?
答案 0 :(得分:5)
找到此here。如果您正在使用jQuery,这应该会有所帮助。
function getURLParameter(name) {
return decodeURI(
(RegExp(name + '=' + '(.+?)(&|$)').exec(location.search)||[,null])[1]
);
}
这是一个javascript函数,它将返回传递给它的参数的url中的值。在这种情况下,您可以使用
调用它var a = getURLParameter("user");
var b = getURLParameter("ptid");
编辑:我误解了你的问题的原始版本,因为他要求获取加载.html页面的参数。我刚刚测试了这个解决方案,它在.js文件本身中不起作用。但是,如果您在.js文件中声明变量,并将其放在onLoad事件中,从var
和a
前面删除b
,则应正确分配变量。
答案 1 :(得分:2)
可能已过时,但是代码很好,并且会完全按照OP中的要求进行操作
// Extract "GET" parameters from a JS include querystring
function getParams(script_name) {
// Find all script tags
var scripts = document.getElementsByTagName("script");
// Look through them trying to find ourselves
for(var i=0; i<scripts.length; i++) {
if(scripts[i].src.indexOf("/" + script_name) > -1) {
// Get an array of key=value strings of params
var pa = scripts[i].src.split("?").pop().split("&");
// Split each key=value into array, the construct js object
var p = {};
for(var j=0; j<pa.length; j++) {
var kv = pa[j].split("=");
p[kv[0]] = kv[1];
}
return p;
}
}
// No scripts match
return {};
}
Source: James Smith - Extract GET Params from a JavaScript Script Tag
答案 2 :(得分:1)
我知道这是一个旧帖子,但是当我正在寻找类似的东西时,我偶然发现了它。我最终采用的非常简单的解决方案如下:
<html><head></head><body>
<script>
var a = "Ankit";
var b = 18;
</script>
<script src="http://example.com/script.js?user=Ankit&ptid=18"></script>
</body></html>
如果你绝对想让你的生活复杂化并使用Lahmizzar的解决方案,我建议给你的标签脚本一个id,这样可以避免贪婪函数。
HTML:
<script src="http://example.com/script.js?user=Ankit&ptid=18" id="myScript"></script>
JS:
function getParams(script_id) {
var script = document.getElementById(script_id);
if(script) {
// Get an array of key=value strings of params
var pa = script.src.split("?").pop().split("&");
// Split each key=value into array, the construct js object
var p = {};
for(var j=0; j<pa.length; j++) {
var kv = pa[j].split("=");
p[kv[0]] = kv[1];
}
return p;
}
// No scripts match
return {};
}
getParams("myScript");