URL管理工具?

时间:2011-12-20 17:28:37

标签: javascript

是否有(本机)JavaScript API为自定义URL提供window.location的“功能”?

的内容
var url = new URL("http://stackoverflow.com/question?hello=world#foo");
console.log(url.hostname, url.path);
// out: "stackoverflow.com", "/question"
url.hash = "bar";
url.query = "";
console.log(url);
// out: "http://stackoverflow.com/question#bar"

我相当确定没有本地API(出于什么原因)。如果有人实现了这一点,请分享链接。

2 个答案:

答案 0 :(得分:3)

所以答案是肯定的,不是。

正如一些答案建议的那样,您可以创建一个锚元素并使用它来进行解析,这基本上是本机代码。

var url = document.createElement("A");
url.href = "http://stackoverflow.com/question?hello=world#foo";

console.log('// expected: "stackoverflow.com", "/question"');
console.log('//      got: "' + url.hostname + '", "' + url.pathname + '"');
output -->           got: "stackoverflow.com", "/question"

url.hash = "bar";
url.search = "";

console.log('// expected: "http://stackoverflow.com/question#bar"');
console.log('//      got: "' + url.href + '"');
output -->           got: "http://stackoverflow.com/question?#bar"

现场演示:http://jsfiddle.net/roberkules/H48dt/

唯一的区别是,在清空查询字符串后,不会被删除。

“API”:

url.protocol
url.host
url.port
url.pathname
url.search
url.hash

答案 1 :(得分:2)

由于没有有用的API来处理网址,我自己构建了一个:URI.js

它允许您通过类似jQuery的API读取/写入URL的组件,并具有一些用于处理查询字符串,规范化URL和创建相对/绝对路径的有用功能。

圣诞快乐,享受:)