在JavaScript中创建新的位置对象
-
13-09-2020 - |
题
是否可以在JavaScript中创建新的位置对象?我有一个字符串的URL,我想利用JavaScript已经提供了访问它的不同部分。
这是我在说什么的例子(我知道这不起作用):
var url = new window.location("http://www.example.com/some/path?name=value#anchor");
var protocol = url.protocol;
var hash = url.hash;
// etc etc
.
是这样做的,或者我本质上必须自己创建这个对象吗?
解决方案
嗯,您可以使用锚元素提取URL零件,例如:
var url = document.createElement('a');
url.href = "http://www.example.com/some/path?name=value#anchor";
var protocol = url.protocol;
var hash = url.hash;
alert('protocol: ' + protocol);
alert('hash: ' + hash);
.
它适用于所有现代浏览器,甚至在IE 5.5 +上。
检查一个示例 。
其他提示
如何使用标准 url对象?
var url = new URL("http://www.example.com/some/path?name=value#anchor");
var protocol = url.protocol;
var hash = url.hash;
.
警告:这个界面有点新,所以,如果你没有使用a transpiler ,请检查兼容性表并在目标浏览器中进行测试。
您可以利用锚元素的功率
var aLink = document.createElement("a");
aLink.href="http://www.example.com/foo/bar.html?q=123#asdf";
alert(aLink.pathname);
. 您可以将其解析在Regex中以使零件作为匹配项......我现在没有完整的代码,但这可以用来获取querydata:
var myUrl = window.location.href;
var matches = myUrl.match(/([^\?]+)\?(.+)/);
var queryData = matches[2];
.
匹配[0]是完整字符串,匹配(1)是URL的第一部分(最多?)...您可以构建正则表达式,以解析字符串URL的每个部分...
您还可以使用其中的许多库中的一个。
不隶属于 StackOverflow