如何从.js文件的url获取变量?

时间:2013-05-14 13:27:39

标签: php javascript url variables get

示例:假设当前页面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吗?

3 个答案:

答案 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事件中,从vara前面删除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");