2

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

4

3 回答 3

5

在这里找到这个。如果您使用的是 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 事件中,从andvar前面删除,它应该正确分配变量。ab

于 2013-05-14T13:31:16.837 回答
3

也许过时了,但是一段很好的代码,并且会完全按照 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 {};
}

来源:James Smith - 从 JavaScript 脚本标签中提取 GET 参数

于 2014-03-11T15:44:45.623 回答
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");
于 2021-02-18T18:59:45.527 回答