2011-12-20 3 views
5

Есть ли (собственный) javascript API, который предлагает «функциональность» window.location для настраиваемых URL-адресов? что-то в строкахУтилита управления URL?

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

возможно дубликат [Как разобрать URL в имя хоста и путь в JavaScript?] (Http://stackoverflow.com/questions/736513/how-do-i- parse-a-url-in-hostname-and-path-in-javascript) – Cameron

+0

@Cameron Вопросы могут быть похожими, но библиотека, с которой я связан, не существует, например (и, возможно, других решений). – deviousdodo

+0

@ draevor: Да, возможно, лучше сохранить оба (или, возможно, их объединить). – Cameron

ответ

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

не знаю, что было возможно, спасибо. (Не очень помогает, хотя) – rodneyrehm

2

Поскольку не было полезным API для работы с URL-адресов, я построил одну себе: URI.js.

Он позволяет вам читать/писать компоненты URL-адреса через API-интерфейс, подобный jQuery, и имеет некоторые полезные функции для работы с строками запросов, нормализации URL-адресов и создания относительных/абсолютных путей.

С Рождеством, наслаждайтесь :)

Смежные вопросы