Javascript 如何检查用户是否正在访问站点';谁的根url?

Javascript 如何检查用户是否正在访问站点';谁的根url?,javascript,asp.net,asp.net-mvc-3,razor,Javascript,Asp.net,Asp.net Mvc 3,Razor,如果用户正在访问我的站点的根url,我想启动一些脚本 例如,当用户访问时,我想在我的视图中执行一些操作 www.example.com example.com www.example.com/ http://www.example.com http://example.com 。。。[上述各项的各种组合。] 而且不适用于www.example.com/anythis 在ASP.NET MVC 3[Razor]网站和javascript的查看页面中检查此问题最安全的方法是什么?另外,有没有办法

如果用户正在访问我的站点的根url,我想启动一些脚本

例如,当用户访问时,我想在我的视图中执行一些操作

  • www.example.com
  • example.com
  • www.example.com/
  • http://www.example.com
  • http://example.com
。。。[上述各项的各种组合。]

而且不适用于
www.example.com/anythis

在ASP.NET MVC 3[Razor]网站和javascript的查看页面中检查此问题最安全的方法是什么?另外,有没有办法只使用javascript来找出答案?

谢谢。

带有如下正则表达式:


(/^https?\:\/\/[^\/]+\/?$/).test(window.location.href)

最简单的JavaScript方法是:

var is_root = location.pathname == "/"; //Equals true if we're at the root
偶数
http://example.com/?foo=bar#hash
将生成正确的结果,因为路径名不包括查询字符串和位置哈希

看看:

http://anything-but-a-slash/                  Root
                           /?querystring      Root
                           /#hash             Root
                           /page              Not root
如果根文件夹中有索引文件,请查看以下示例:

var is_root =/^\/(?:|index\.aspx?)$/i.test(location.pathname);
前一行使用的是正则表达式。特殊字符必须转义,
/i
后缀使模式不区分大小写。如果希望大小写匹配,请省略
i
标志

相同的正则表达式以图形方式显示:

我想

if(window.location == window.location.hostname) {
    //is root
}

编辑:不要使用此表达式,请参见注释尝试使用此更健壮的正则表达式:

Regex

var isRoot =/^(\/|\/index\.asp|\/index\.aspx)$/i.test(location.pathname);

说明


演示

当我从联机IDE以调试/预览模式运行应用程序时,“/”的路径名测试失败。换句话说,它通常由一个干净的url(无
.html
)提供,除非我从Cloud9提供它,在这种情况下,它由
index.html
提供

所以,这对我来说是可行的:


如果(window.location.pathname.length==1 | | | window.location.pathname.length==0 | | | window.location.pathname==“/index.html”| | window.location.pathname==”/index”){
//我在应用程序根目录下
}

以下内容如何:

if (location.pathname == "/" || (window.location.href.indexOf("Index") > -1)){

  console.log("do stuff") 

}

请注意,“索引”区分大小写

谢谢。但是
window.location.hostname
与端口号无关。因此,在dev中,如果您使用的端口号不是80,则会得到错误的结果。感谢您给出的完整答案。如果您还需要对localhost的支持,请尝试此方法,其中/Site/表示项目变量为_root=(window.location.pathname=”/“| | window.location.pathname=”/Site/”?真:假@用于
http://localhost/Site/
位置。路径名
显示
/Site/
。如果要临时测试网站,最好使用
.htaccess
重写根目录。请参阅:。另外,
a==b
已经返回一个布尔值,不需要使用
(a==b?true:false)
。正则表达式将匹配以
/
开头的任何网页作为根页面。改为勾选这个答案:@Alex谢谢你提出来。我已经修改了regexp。似乎更容易使用
窗口。location.pathname
@Mic与regex有点混淆,你能简要介绍一下吗?用http
http
开始
^
,可能是https
s?
然后:/,然后是除a/
[^\/]+
之外的任何东西,以a/或不
\/////code>结尾,字符串的结尾
$