วิธีรับ URL โฮสต์โดยใช้ javascript จากหน้าปัจจุบัน


183

ระบุว่าฉันอยู่ในหน้าต่อไปนี้:

http://www.webmail.com/pages/home.aspx

ฉันจะดึงชื่อโฮสต์ ( "http://www.webmail.com") ด้วย JavaScript ได้อย่างไร


3
เป็นไปได้ที่ซ้ำกันของรับชื่อโฮสต์ใน JavaScript
T.Todua

คำตอบ:


319
var host = window.location.hostname;

หรืออาจจะเป็น

var host = "http://"+window.location.hostname;

หรือถ้าคุณชอบเรียงต่อกัน

var protocol = location.protocol;
var slashes = protocol.concat("//");
var host = slashes.concat(window.location.hostname);

3
อาจไม่ได้ระบุhttpว่า ใช้โปรโตคอลที่เกี่ยวข้อง อาจเหมาะสมกว่าการเข้ารหัสแบบแข็ง
Darth Egregious

33
ใช้ window.location.host แทนชื่อโฮสต์หรือจะล้มเหลวหากพอร์ตไม่ใช่ 80
Stefan Steiger

1
@MattBrowne concatเมื่อทำงานร่วมกับบางสิ่งบางอย่างที่จะผลิตสตริงผมว่าคุณควรใช้ ในตัวอย่างvar a = 1 + 2 + " should be 12";เทียบกับรุ่น concat var a = "".concat(1).concat(2).concat(" should be 12");นี้ การใช้ concat จะช่วยให้คุณประหยัดปัญหาได้มาก+สำหรับการคำนวณไม่ใช่การต่อข้อมูล
Eric Herlitz

3
hostnameจะให้โดเมนเท่านั้นและhostจะให้พอร์ตด้วย นี่คือเครื่องมือขนาดเล็กที่ยอดเยี่ยมในการดูลิงค์กายวิภาคศาสตร์bl.ocks.org/abernier/3070589
Lukas Liesis

4
window.location.origin ทำงานได้ดีเช่นกัน - ซึ่งรวมถึงโปรโตคอลและพอร์ต
rothschild86

96

ในการรับชื่อโฮสต์: location.hostname

แต่ตัวอย่างของคุณกำลังมองหารูปแบบเช่นกันดังนั้นlocation.originดูเหมือนจะทำสิ่งที่คุณต้องการใน Chrome แต่ไม่ได้พูดถึงในเอกสาร Mozdev คุณสามารถสร้างมันด้วย

location.protocol + '//' + location.hostname

หากคุณต้องการหมายเลขพอร์ตเช่นกัน (สำหรับเมื่อไม่ใช่ 80) ให้ทำดังนี้:

location.protocol + '//' + location.host

ดูเหมือนว่า Firefox 4 จะไม่สามารถใช้งานได้แม้ว่า Chrome 12 จะเป็นเช่นนั้น มันกำหนดไว้ในข้อมูลจำเพาะหรือไม่?
Delan Azabani

สวัสดี .. สำหรับการรับพอร์ตตัวอย่างทำงานเหมือนมีเสน่ห์ .. ขอบคุณสำหรับสิ่งนั้น
karthik k

FF รองรับ location.origin ตั้งแต่ 21.0: developer.mozilla.org/en-US/docs/Web/API/Window.location
zifot

67

คุณสามารถรับโปรโตคอลโฮสต์และพอร์ตโดยใช้สิ่งนี้:

window.location.origin

ความเข้ากันได้ของเบราว์เซอร์

เดสก์ทอป

| Chrome                           | Edge  | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit)                            |
|----------------------------------|-------|-----------------|-------------------|-------|--------------------------------------------|
| (Yes)                            | (Yes) | (Yes)           | (Yes)             | (Yes) | (Yes)                                      |
| 30.0.1599.101 (possibly earlier) | ?     | 21.0 (21.0)     | 11                | ?     | 7 (possibly earlier, see webkit bug 46558) |

โทรศัพท์มือถือ

| Android                          | Edge  | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile                              |
|----------------------------------|-------|------------------------|----------|--------------|--------------------------------------------|
| (Yes)                            | (Yes) | (Yes)                  | (Yes)    | (Yes)        | (Yes)                                      |
| 30.0.1599.101 (possibly earlier) | ?     | 21.0 (21.0)            | ?        | ?            | 7 (possibly earlier, see webkit bug 46558) |

ความเข้ากันได้ของเบราว์เซอร์ทั้งหมดมาจากMozilla Developer Network


4
ฉันควรจะพูดถึง IE ไม่สนับสนุนสิ่งนี้
Monso

โปรดอย่าพูดถึงว่าเป็นคุณลักษณะใหม่และไม่รองรับเบราว์เซอร์รุ่นเก่า
kabirbaidhya

@kabirbaidhya แล้วความเข้ากันได้ของ verbose!
จันทร์ที่

ดี. แต่จะเกิดอะไรขึ้นเมื่อคน MDN อัปเดตตารางความเข้ากันได้ของเบราว์เซอร์ คุณอาจต้องอัปเดตสิ่งนี้ต่อไปเพื่อซิงค์กับตารางของพวกเขา;)
kabirbaidhya

ไม่จริงนี่เป็นรุ่นที่รู้ได้เร็วที่สุดที่จะสนับสนุนไม่ใช่เวอร์ชันล่าสุดและเบราว์เซอร์ทั้งหมดที่พวกเขาดูสนับสนุนอยู่แล้ว สิ่งนี้จะเปลี่ยนแปลงหากพวกเขาตัดสินใจที่จะรวมเบราว์เซอร์อื่นของสามารถคิดหมายเลขรุ่นในบางเบราว์เซอร์ที่สนับสนุนซึ่งค่อนข้าง moot เนื่องจากใหม่กว่าส่วนใหญ่มาจากรุ่นแรกของพวกเขา
จันทร์ที่



5

ขึ้นอยู่กับความต้องการของคุณคุณสามารถใช้window.locationคุณสมบัติอย่างใดอย่างหนึ่ง ในคำถามของคุณคุณจะถามเกี่ยวกับโฮสต์ซึ่งอาจถูกดึงโดยใช้window.location.hostname(เช่นwww.example.com) ในตัวอย่างของคุณคุณกำลังแสดงบางสิ่งที่เรียกว่าจุดกำเนิดซึ่งอาจถูกดึงโดยใช้window.location.origin(เช่นhttp://www.example.com)

var path = window.location.origin + "/";

//result = "http://localhost:60470/"

2

ฉันชอบอันนี้ขึ้นอยู่กับวัตถุประสงค์

window.location.href.split("/")[2] == "localhost:17000" //always domain + port

คุณสามารถนำไปใช้กับ URL ใด ๆ

var url = "http://localhost:17000/sub1/sub2/mypage.html?q=12";
url.split("/")[2] == "localhost:17000"
url.split("/")[url.split("/").length-1] == "mypage.html?q=12"

การลบโปรโตคอลโดเมนและพา ธ ออกจาก url-string (เส้นทางสัมพัทธ์)

var arr = url.split("/");
if (arr.length>3)
   "/" + arr.splice(3, arr.length).join("/") == "/sub1/sub2/mypage.html?q=12"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.