ฉันจะรับชื่อโดเมนด้วย jquery ได้อย่างไร?
ฉันจะรับชื่อโดเมนด้วย jquery ได้อย่างไร?
คำตอบ:
คุณไม่ต้องการ 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
และหมายเลขพอร์ตใน
window.location.host
(ตาม bibby โพสต์) ฉันเพิ่งแก้ไขข้อผิดพลาดที่document.domain
ถูกตั้งค่าเป็นโดเมนรูตแทนที่จะเป็นโดเมนย่อย
document.location.origin
undefined
แก้ไข:
หากคุณไม่ต้องการรองรับ 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
document.location.origin
ซึ่งจะส่งผลให้https://stackoverflow.com วิธีนี้รวมถึงโปรโตคอลที่เหมาะสม
คล้ายกับคำตอบก่อนที่จะมี
location.host
สถานที่ตั้งทั่วโลกมีข้อเท็จจริงที่สนุกสนานเกี่ยวกับ URL ปัจจุบันเช่นกัน (โปรโตคอล, โฮสต์, พอร์ต, ชื่อพา ธ , ค้นหา, แฮช)
หากคุณต้องการจากสตริงเช่นฉันใช้ฟังก์ชั่นนี้ - มันใช้งานได้จริง
function getHost(url)
{
var a = document.createElement('a');
a.href = url;
return a.hostname;
}
แต่โปรดทราบว่าหากมีโดเมนย่อย (เช่น www.) ใน URL ระบบจะส่งคืนพร้อมชื่อโฮสต์ ในทางกลับกันหากไม่มีโดเมนย่อยชื่อโฮสต์จะไม่มีอย่างใดอย่างหนึ่ง
getHost('http://www.google.com') == 'google.com'
แต่ทว่าสิ่งนี้จะเป็นจริง:getHost('http://google.com') == 'google.com'
คุณสามารถใช้รหัสด้านล่างเพื่อรับพารามิเตอร์ที่แตกต่างกันของ 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);
jQuery ไม่จำเป็นต้องใช้ javascript ง่าย ๆ :
document.domain
document.baseURI
ให้โดเมน + พอร์ต มันจะใช้ถ้าแท็กภาพใช้ความสัมพันธ์แทนเส้นทางที่แน่นอน อาจแก้ไขแล้ว แต่อาจเป็นประโยชน์สำหรับคนอื่น
var part = location.hostname.split('.');
var subdomains = part.shift();
var upperleveldomains = part.join('.');
โดเมนระดับที่สองคุณอาจใช้
var sleveldomain = parts.slice(-2).join('.');
ตรวจสอบนี้
alert(window.location.hostname);
สิ่งนี้จะส่งคืนชื่อโฮสต์เป็น www.domain.com
เท่าที่ฉันเห็นไม่มีใครโพสต์โซลูชัน jquery แต่รหัสจาวาสคริปต์
คุณต้องส่ง URL เป็นสตริงและจะได้รับโฮสต์โดยไม่ต้องใช้ regexp
function getHostFromUrl(urlString) {
return $a = $('<a>', {
'href': urlString
}).prop('host');
}
//If url is something.domain.com this returns -> domain.com
function getDomain() {
return window.location.hostname.replace(/([a-z]+.)/,"");
}
//If url is something.domain.com this returns -> domain.com
function getDomain() {
return window.location.hostname.replace(/([a-zA-Z0-9]+.)/,"");
}
Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.
- Jamie Zawinski