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

是否有可能在JavaScript中创build一个新的位置对象? 我有一个string的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 

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

那么,你可以使用一个锚点元素来提取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; 

警告 :这个接口有点新,所以请检查兼容性表 ,并在目标浏览器上进行testing。

你可以利用锚元素的力量

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

你可以parsing它在正则expression式来获取匹配的部分…我现在没有完整的代码,但是这可以用来得到querydata:

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

匹配[0]是完整的string,匹配(1)是URL的第一部分(直到?)…你可以build立一个正则expression式来parsingstringurl的每个部分,如果你想…

你也可以使用已经存在的许多库中的一个。