2011-12-20 41 views
5

Có API JavaScript (bản địa) cung cấp "chức năng" của window.location cho URL tùy chỉnh không? một cái gì đó dọc theo dòng củaCơ sở quản lý 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" 

Tôi khá chắc chắn không có API gốc cho điều này (vì lý do nào). Nếu ai đó thực hiện việc này, vui lòng chia sẻ liên kết.

+0

thể trùng lặp của [Làm thế nào để phân tích cú pháp URL vào hostname và đường dẫn trong javascript?] (Http://stackoverflow.com/questions/736513/how-do-i- parse-a-url-into-hostname-và-path-in-javascript) – Cameron

+0

@Cameron Các câu hỏi có thể tương tự, nhưng thư viện mà tôi liên kết không có ví dụ (và có thể là các giải pháp khác). – deviousdodo

+0

@draevor: Vâng, có thể là tốt nhất để giữ cho cả hai (hoặc có họ sáp nhập, có thể). – Cameron

Trả lời

3

Vì vậy, câu trả lời là có và không.

Như một số câu trả lời gợi ý, bạn có thể tạo phần tử neo và sử dụng nó để thực hiện phân tích cú pháp, về cơ bản là mã gốc.

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" 

Live Demo: http://jsfiddle.net/roberkules/H48dt/

Sự khác biệt duy nhất là, rằng ? không bị xóa sau khi chuỗi truy vấn bị làm trống.

Các "API":

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

không biết điều đó là có thể, cảm ơn. (Tuy nhiên, không giúp được gì nhiều) – rodneyrehm

2

Vì không có API hữu ích để làm việc với URL, tôi đã xây dựng một bản thân mình: URI.js.

Nó cho phép bạn đọc/ghi các thành phần của URL thông qua API giống jQuery và có một số tính năng hữu ích để làm việc với chuỗi truy vấn, chuẩn hóa URL và tạo đường dẫn tương đối/tuyệt đối.

Giáng sinh vui vẻ, thưởng thức :)

Các vấn đề liên quan