如何检查用户是否正在访问该站点的根URL?

Kam*_*yar 21 javascript asp.net razor asp.net-mvc-3

如果用户访问我网站的根网址,我想启动一些脚本.

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

  • www.example.com
  • example.com
  • www.example.com/
  • http://www.example.com
  • http://example.com

...... [以上的各种组合.]

而不是www.example.com/anything else.
在ASP.NET MVC 3 [Razor]网站和javascript的视图页面中检查这个的最安全的方法是什么?另外,有没有办法找出只使用javascript?
谢谢.

Rob*_*b W 59

最简单的JavaScript方法是:

var is_root = location.pathname == "/"; //Equals true if we're at the root
Run Code Online (Sandbox Code Playgroud)

甚至http://example.com/?foo=bar#hash会产生正确的结果,因为路径名排除了查询字符串和位置哈希.

看一看:

http://anything-but-a-slash/                  Root
                           /?querystring      Root
                           /#hash             Root
                           /page              Not root
Run Code Online (Sandbox Code Playgroud)

如果您的根文件夹中有索引文件,请查看以下示例:

var is_root =/^\/(?:|index\.aspx?)$/i.test(location.pathname);
Run Code Online (Sandbox Code Playgroud)

上一行使用的是正则表达式.必须转义特殊字符,/i后缀使模式不区分大小写.如果您希望案例匹配,请省略该i标志.

以图形方式呈现相同的正则表达式:

正则表达式可视化