与检查用户代理是否通过正确的域进行访问相比,以下哪一项最有效。
如果他们正在使用某种Web代理访问域,我们想展示一个基于js的小型“顶栏”样式警告(因为它倾向于破坏JS)。
我们正在考虑使用以下内容:
var r = /.*domain\.com$/;
if (r.test(location.hostname)) {
// showMessage ...
}
这将照顾到我们曾经使用过的任何子域。
我们应该使用哪个主机名或主机名?
在Firefox 5和Chrome 12中:
console.log(location.host);
console.log(location.hostname);
..对两个都显示相同的内容。
那是因为端口实际上不在地址栏中吗?
W3Schools说主机包含端口。
应该验证一下location.host/hostname还是在IE6 +中以及我们将要存在的所有其他内容中完全确定?
作为一个小提示:交互式链接剖析
-
简而言之(假设位于http://example.org:8888/foo/bar#bang
):
hostname
给你example.org
host
给你example.org:8888
如果指定了主机号,则主机仅包含端口号。如果URL中没有专门的端口号,则它返回与主机名相同的端口号。您可以选择是否要匹配端口号。有关更多信息,请参见https://developer.mozilla.org/en/window.location。
我假设您希望主机名仅获取站点名称。
如果您坚持使用,则window.location.origin
可以在阅读本文之前将其放在代码顶部origin
if (!window.location.origin) {
window.location.origin = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');
}
PS:记录下来,这实际上是最初的问题。它已经被编辑了:)
您的主要问题已在上面回答。我只是想指出您使用的正则表达式有一个错误。它也将在foo-domain.com
不属于的子域上成功domain.com
您真正想要的是:
/(^|\.)domain\.com$/
MDN:https://developer.mozilla.org/en/DOM/window.location
看起来您将获得相同的结果,但是hostname
包含清晰的主机名,没有方括号或端口号。
本文地址:http://javascript.askforanswer.com/location-hostyulocation-hostnamehekualiulanqidejianrongxing.html
文章标签:host , html , javascript , location , window
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
文章标签:host , html , javascript , location , window
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
评论已关闭!