是否有(本机)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(出于什么原因)。如果有人实现了这一点,请分享链接。
答案 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和创建相对/绝对路径的有用功能。
圣诞快乐,享受:)