使用 URL 设置变量

Setting a variable with URL

我部署了一个运行良好的 firebase 站点。我遇到的问题是下一个: 在我的 main.js 中,我有一个名为 company 的变量。有没有办法根据 URL 设置该变量?例如:

site-ce207.firebaseapp.com/company=01

或者你知道别的方法吗?

正如 Mouser 指出的那样,这是无效的:

site-ce207.firebaseapp.com/company=01

然而,这不是:

site-ce207.firebaseapp.com#company=01&id=5

而且很容易解析:

var queries=location.hash.slice(1).split("&").map(el=>el.split("="));

这样查询 now.looks:

[
["company","01"],
["id","5"]
]

所以要解决它可能会使用一个对象:

var getQuery={};
queries.forEach(query=>getQuery[query[0]]=query[1]);

所以现在很容易得到某个密钥:

console.log(getQuery["company"]);

或者更容易使用地图的新方法:

var query=new Map(queries);
console.log(query.get("company"));

我很久以前就找到了一个简单的函数来处理这个问题。我做了一些修改以通过这样做来获取值。

function param(name) {
    name = name.replace(/[\[]/, "\[").replace(/[\]]/, "\]");
    var regex = new RegExp("[\?&]" + name + "=([^&#]*)"),
        results = regex.exec(location.search);
    return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}

然后使用我执行以下操作的值

var myCity = param('cityid');

发出类似以下内容时:http://example.com/?cityid=Guatemala

myCity 在我的应用程序中将具有 'Guatemala' 的值。