jquery โดเมนรับ URL


คำตอบ:


335

คุณไม่ต้องการ jQuery สำหรับเรื่องนี้เนื่องจาก javascript แบบธรรมดาจะพอเพียง:

alert(document.domain);

ดูการทำงาน:

console.log("Output;");  
console.log(location.hostname);
console.log(document.domain);
alert(window.location.hostname)

console.log("document.URL : "+document.URL);
console.log("document.location.href : "+document.location.href);
console.log("document.location.origin : "+document.location.origin);
console.log("document.location.hostname : "+document.location.hostname);
console.log("document.location.host : "+document.location.host);
console.log("document.location.pathname : "+document.location.pathname);

สำหรับค่าที่เกี่ยวข้องกับโดเมนเพิ่มเติมให้ตรวจสอบคุณสมบัติของwindow.locationออนไลน์ คุณอาจพบว่าเป็นตัวเลือกที่ดีกว่าที่เป็นเนื้อหาอาจแตกต่างไปจากlocation.host document.domainยกตัวอย่างเช่น URL ที่http://192.168.1.80:8080จะมีเพียง IPADDRESS ในdocument.domainแต่ทั้งสอง IPADDRESS location.hostและหมายเลขพอร์ตใน


7
@ rob.alarcon เป็นคำแนะนำ W3Cและได้รับการสนับสนุนอย่างกว้างขวางในเบราว์เซอร์ทั้งเก่าและใหม่ ปัญหาเดียวที่ฉันรู้คือเบราว์เซอร์บางตัว ( เช่น Firefox ) จะช่วยให้คุณเขียนถึงสถานที่ให้บริการนี้ (อ่านอย่างเดียวตามสเปค) ตราบใดที่ค่าใหม่เป็นโดเมนย่อยของโดเมนดั้งเดิม
แซมสัน

4
ที่จริงผมจะแนะนำให้ใช้window.location.host(ตาม bibby โพสต์) ฉันเพิ่งแก้ไขข้อผิดพลาดที่document.domainถูกตั้งค่าเป็นโดเมนรูตแทนที่จะเป็นโดเมนย่อย
Derek Morrison

ใน IE11 ผลตอบแทนdocument.location.origin undefined
TimothyBuktu

113

แก้ไข:

หากคุณไม่ต้องการรองรับ IE10 คุณสามารถใช้: document.location.origin

คำตอบเดิมถ้าคุณต้องการการสนับสนุนแบบดั้งเดิม

คุณสามารถได้รับทั้งหมดนี้และอีกมากโดยการตรวจสอบวัตถุที่ตั้ง:

location = {
  host: "stackoverflow.com",
  hostname: "stackoverflow.com",
  href: "http://stackoverflow.com/questions/2300771/jquery-domain-get-url",
  pathname: "/questions/2300771/jquery-domain-get-url",
  port: "",
  protocol: "http:"
}

ดังนั้น:

location.host 

จะเป็นโดเมนในกรณีนี้ stackoverflow.com สำหรับส่วนแรกที่สมบูรณ์ของ URL คุณสามารถใช้:

location.protocol + "//" + location.host

ซึ่งในกรณีนี้จะเป็นhttp://stackoverflow.com

ไม่ต้องใช้ jQuery



@ สำหรับ URL ที่สมบูรณ์ทำไมไม่ใช้document.location.originซึ่งจะส่งผลให้https://stackoverflow.com วิธีนี้รวมถึงโปรโตคอลที่เหมาะสม
Nathileo

33

คล้ายกับคำตอบก่อนที่จะมี

location.host

สถานที่ตั้งทั่วโลกมีข้อเท็จจริงที่สนุกสนานเกี่ยวกับ URL ปัจจุบันเช่นกัน (โปรโตคอล, โฮสต์, พอร์ต, ชื่อพา ธ , ค้นหา, แฮช)


20

หากคุณต้องการจากสตริงเช่นฉันใช้ฟังก์ชั่นนี้ - มันใช้งานได้จริง

function getHost(url)
{
    var a = document.createElement('a');
    a.href = url;
    return a.hostname;
}

แต่โปรดทราบว่าหากมีโดเมนย่อย (เช่น www.) ใน URL ระบบจะส่งคืนพร้อมชื่อโฮสต์ ในทางกลับกันหากไม่มีโดเมนย่อยชื่อโฮสต์จะไม่มีอย่างใดอย่างหนึ่ง


@Vova Popov (หรือบางคน) ช่วยอธิบายประโยคสุดท้ายได้ไหม? "www. ar no www."?!?
Randall Cook

2
เขาบอกว่า a.hostname จะส่งคืน www นั่นเป็นส่วนหนึ่งของโดเมนของคุณ ดังนั้นอาจกล่าวได้ว่าเป็นเท็จgetHost('http://www.google.com') == 'google.com'แต่ทว่าสิ่งนี้จะเป็นจริง:getHost('http://google.com') == 'google.com'
Milimetric

9

คุณสามารถใช้รหัสด้านล่างเพื่อรับพารามิเตอร์ที่แตกต่างกันของ URL ปัจจุบัน

alert("document.URL : "+document.URL);
alert("document.location.href : "+document.location.href);
alert("document.location.origin : "+document.location.origin);
alert("document.location.hostname : "+document.location.hostname);
alert("document.location.host : "+document.location.host);
alert("document.location.pathname : "+document.location.pathname);

มีวิธีการรับโฮสต์ที่ไฟล์ js โฮสต์แทนเอกสารหรือไม่ ATM. ฉันกำลังจัดการด้านเซิร์ฟเวอร์ไฟล์ js เพื่อรับสตริง "การเชื่อมต่อ" ซึ่งใช้งานได้ แต่ดูไม่มีประสิทธิภาพเนื่องจากฉันต้องการไฟล์ js แบบคงที่
yellowsir

6

jQuery ไม่จำเป็นต้องใช้ javascript ง่าย ๆ :

document.domain

อาจจะไม่จำเป็น แต่บอกว่าคุณไม่ได้ตอบคำถาม
Emiliano

ใช่ฉันไม่ใช่หุ่นยนต์ที่ตอบคำถามอย่างแท้จริง ฉันตอบคำถามอย่างจริงจังรู้ว่าเป้าหมายสุดท้ายคืออะไรและคุณไม่ต้องการ jQuery เพื่อให้บรรลุเป้าหมาย
อดัม

ฉันเข้าใจ แต่คำตอบแบบนั้นไม่สมบูรณ์ถ้าคุณต้องการคุณสามารถตอบได้ดีกว่า
Emiliano

3

document.baseURIให้โดเมน + พอร์ต มันจะใช้ถ้าแท็กภาพใช้ความสัมพันธ์แทนเส้นทางที่แน่นอน อาจแก้ไขแล้ว แต่อาจเป็นประโยชน์สำหรับคนอื่น



1

ตรวจสอบนี้

alert(window.location.hostname);

สิ่งนี้จะส่งคืนชื่อโฮสต์เป็น www.domain.com


0

เท่าที่ฉันเห็นไม่มีใครโพสต์โซลูชัน jquery แต่รหัสจาวาสคริปต์

คุณต้องส่ง URL เป็นสตริงและจะได้รับโฮสต์โดยไม่ต้องใช้ regexp

function getHostFromUrl(urlString) {
    return $a = $('<a>', {
        'href': urlString
    }).prop('host');
}


-4
//If url is something.domain.com this returns -> domain.com
function getDomain() {
  return window.location.hostname.replace(/([a-zA-Z0-9]+.)/,"");
}

3
แต่ถ้า url ไม่มีคำนำหน้ามันจะลบชื่อโดเมน .. ตัวอย่าง: "stackoveflow.com" จะกลายเป็น "com"
Filipiz

Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.- Jamie Zawinski
msangel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.