如何根据window.location显示文本?

时间:2014-07-03 14:27:30

标签: javascript html

我正在设计一个网页,并希望在没有像[{1}}这样的网址的情况下查看网站时显示代码段,但是在使用http://example.com查看时却不会显示。

http://www.example.com

使用此功能,我可以将用户从www版本重定向到非www版本。 但是如果我想要添加的代码仅在地址栏中的地址为<script type="text/javascript"> if (window.location.href== "http://www.example.com") { window.location.href = 'http://example.com/'; } </script> 时显示,并且当url为http://example.com时显示其他内容,则会更好。 我认为这可以使用类似的JavaScript代码完成。 但是使用document.write。

5 个答案:

答案 0 :(得分:1)

无论如何,你要找的东西是window.location.host

如果您想重定向(是的,但是很愚蠢)

<script type="text/javascript">
    if (window.location.host == "www.example.com") {
       window.location.href = window.location.protocol + '//example.com' + window.location.pahtname + window.location.hash ; 
    }
</script>

好消息是,如果用户在https://www.example.com/page/42#anchor856http://www.example.com/mywifehatesme上,则无关紧要,新地址将相同。但不好的是,这将在历史中创建额外的步骤(后退按钮将再次重定向=无限循环),用户将加载页面两次,如果js关闭,则它只是不起作用。

这是用于隐藏元素

<script type="text/javascript">
    if (window.location.host == "www.example.com") {
        document.querySelector("anything").style.display = "none";
    }
</script>

编辑:阻止www用户加载:

当没有www的用户来时,调用同步请求。 (没有js的用户看不到它)

<script type="text/javascript">
    if (window.location.host == "example.com") {
        var xhr = new XMLHttpRequest();
        xhr.open("GET", "example.com/specialData", false);
        xhr.responseType = "text";
        xhr.send();
        window.onload = function () {
            document.querySelector("div#wwwdoesntsee").innerHTML = xhr.responseText;
        };
    }
</script>

答案 1 :(得分:0)

你可以:

<script type="text/javascript">
window.onload = function() {
    if (window.location.href === "http://www.example.com") {
        document.getElementById("myId").style.display = "none";
        // Or, to prevent any further async loading...
        var toRemove = document.getElementById9"myId");
        toRemove.parentNode.removeChild(toRemove);
        // To populate dynamically, change below to style="display:none;" and...
        document.getElementById("myId").style.display = "block";
        document.getElementById("myId").innerHTML = "\
        .... content goes here .... \
        ";
    }
}
</script>

......然后是:

<div id=myId>
... Content I want to hide ...
</div>

(如果使用上面的第三个选项,而是有一个空div):

<div id=myId style="display:none;"></div>

答案 2 :(得分:0)

这听起来像是您应该在服务器上处理的问题。 重定向到&#34; http://example.com&#34;如果用户拨打&#34; http://www.example.com&#34;

如果您想在不同的子域上使用不同的内容,您应该将域提供商的路由选项设置为不同的文件或目录。

答案 3 :(得分:0)

我真的不会考虑这样做。

这不会被归类为301重定向,对你的seo也不好。 如果您使用apache尝试使用this作为.htaccess文件。

答案 4 :(得分:0)

感谢你们所有人。但是现在我根据我提出的问题找到了确切的解决方案。 特点是: 这不会让访问者感到困惑,因为我知道我希望用户看到什么,这也不会要求用户从非www重定向到www。

<script>switch (window.location.host) 
{
   case "example.com":
      document.write("You are a good visitor<BR>\n")
      break 
   case "www.example.com":
      document.write("You are a bad visitor<BR>\n")
      break
   default:
      document.write("You are ALIEN<BR>\n")
      break
}</script>