location.host与location.hostname和cross

其中哪一个是最有效的,与检查用户代理是否通过正确的域进行访问有关。

如果他们使用某种网络代理访问域(因为它倾向于打破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:为了记录,它实际上是第一次被问到。 他们可能已经可以编辑它了。 :)

    链接地址: http://www.djcxy.com/p/70281.html

    上一篇: location.host vs location.hostname and cross

    下一篇: Change the URL in the browser without loading the new page using JavaScript