2010-07-09 51 views
57

是否有可能在JavaScript中創建一個新的位置對象?我有一個URL作爲字符串,我想利用JavaScript已提供的訪問它的不同部分。在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 

是像這樣的東西可能還是我基本上是要創建這個對象自己?

回答

111

好了,你可以使用一個錨元素提取的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+。

檢查示例here

0

您可以分析它的正則表達式來獲得部分火柴......我沒有完整的代碼的權利,但這種可用於獲取querydata:

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

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

您也可以使用已經存在的許多庫中的一個。

8

您可以利用定位元素

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

如何使用標準URL object的力量?

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

警告:該接口是一個有點新的,所以,請檢查compatibility table,並在目標瀏覽器做你的測試。