jQuery,域,获取URL


Answers:


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.locationonline 属性。您可能会发现这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被设置为根域而不是子域。
德里克·莫里森

在IE11中document.location.origin返回undefined
TimothyBuktu '16

113

编辑:

如果您不需要支持IE10,则可以简单地使用: document.location.origin

原始答案,如果您需要旧版支持

您可以通过检查location对象获得所有这些以及更多信息:

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

全球位置也有关于当前网址的更多有趣信息。(协议,主机,端口,路径名,搜索,哈希)


20

如果像我一样需要字符串,请使用此功能-确实可以。

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

但是请注意,如果URL中有一个子域(例如www。),它将返回主机名。相反,如果没有子域,则主机名也不会有一个。


@Vova Popov(或其他人)能否澄清最后一句话?“ www。ar no www。”?!?
兰德尔·库克

2
他是说a.hostname将返回www。这是您网域的一部分。因此,换句话说,这将是错误的:getHost('http://www.google.com') == 'google.com'而这将是正确的:getHost('http://google.com') == 'google.com'
Milimetric 2012年

9

您可以使用以下代码获取当前网址的不同参数

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为您提供域+端口。如果图片标签使用相对路径而不是绝对路径,则使用此路径。可能已经解决了,但是对其他人可能有用。


2
var part = location.hostname.split('.');
var subdomains = part.shift();
var upperleveldomains = part.join('.');

二级域,您可以使用

var sleveldomain = parts.slice(-2).join('.');

1

检查一下

alert(window.location.hostname);

这将返回主机名称为www.domain.com


0

据我所知,除了本地javascript代码,没有人发布过jquery解决方案。

您必须将url作为字符串传递,并且无需使用regexp就可以获取主机。

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

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

-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 2012年

Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.-杰米·
扎温斯基
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.