在javascript中创建一个新的Location对象

时间:2010-07-09 14:23:58

标签: javascript url-parsing

是否可以在javascript中创建新的Location对象?我有一个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

这样的事情是可能的,还是我自己必须自己创建这个对象?

4 个答案:

答案 0 :(得分:119)

好吧,您可以使用锚元素来提取网址部分,例如:

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 +。

查看示例here

答案 1 :(得分:21)

如何使用标准URL object

var url = new URL("http://www.example.com/some/path?name=value#anchor");
var protocol = url.protocol;
var hash = url.hash;

警告:此界面有点新,所以,如果您没有使用transpiler,请检查compatibility table并在目标浏览器上进行测试

答案 2 :(得分:9)

您可以利用锚元素的力量

var aLink = document.createElement("a");
aLink.href="http://www.example.com/foo/bar.html?q=123#asdf";
alert(aLink.pathname);

答案 3 :(得分:-1)

你可以在正则表达式中解析它以使部件成为匹配...我现在没有完整的代码,但这可以用来获取查询数据:

var myUrl = window.location.href;
var matches = myUrl.match(/([^\?]+)\?(.+)/);
var queryData = matches[2];

匹配[0]是完整字符串,匹配(1)是URL的第一部分(直到?)...你可以建立一个正则表达式来解析字符串url的每个部分,如果你想...

您也可以使用已有的众多库中的一个。