如何判断用户是否在index.html上?

时间:2012-01-24 15:53:38

标签: javascript url document detection

我使用document.URL来检测用户是否在index.html上:

if(document.URL.indexOf("index") >-1) return true;

但是如果用户键入“mydomain.com”或“mydomain.com/”,则测试返回false。

我可以试试:

if(document.URL ==="http://myDomain.com") return true;

但我想在不同的域上使用此代码。有什么建议吗?

4 个答案:

答案 0 :(得分:10)

网址排列很多,可以表示用户在index.html上。相反,你不能把var放在那个文件中:

<script type="text/javascript">
    on_index = true;
</script>

只检查on_index是否未定义且为真。这在100%的时间都是准确的。

答案 1 :(得分:5)

javascript Location object有许多有用的属性,特别是,您可以检查location.pathname

基本上,如果路径名为1),则您位于“索引”页面上2)等于斜线/ 3)以index/index开头。< / p>

 var p = window.location.pathname;

 if (p.length === 0 || p === "/" || p.match(/^\/?index/))
     alert ("on the index page!")

有关主要斜杠问题的讨论,请参阅Javascript .pathname IE quirk?

答案 2 :(得分:2)

您可以使用

if (document.location.pathname === '/' || 
    document.location.pathname.indexOf('index') >-1 ) {
   return true;
 }

如果您可以访问实际页面而不仅仅是脚本,那么您应该遵循@Ben Everard's建议。

请确保在脚本之前添加他建议的代码段。

答案 3 :(得分:2)

文件和网址之间没有直接链接。此外,index.html不需要位于网站的根目录中,默认页面也不必是index.html

如果你想要一个通用的解决方案,你可能会运气不好。如果您需要针对特定​​案例的解决方案,您只需从页面本身提供该信息,例如定义ID或类名:

<body class="index">

...或JavaScript变量:

// Pick one
var page = 'index';
var isIndex = true;

如果你想要的只是一些带有当前位置的简单字符串操作,那么抓住pathname对象的window.location属性:

// Untested
if( window.location.pathname=="/" || window.location.pathname=="/index.html" ){
}