Как проверить, посещает ли пользователь корневой URL сайта? - PullRequest
21 голосов
/ 12 ноября 2011

Я бы хотел запустить какой-нибудь скрипт, если пользователь посещает корневой URL моего сайта.

Например, я хочу сделать что-то на мой взгляд, когда пользователь посещает

... [Различные комбинации вышеперечисленного.]

И не для www.example.com/anything else.
Какой самый безопасный способ проверить это на странице просмотра веб-сайта ASP.NET MVC 3 [Razor] и javascript? Кроме того, есть ли способ узнать, используя только javascript?
Спасибо.

Ответы [ 5 ]

59 голосов
/ 12 ноября 2011

Самый простой метод 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.

То же регулярное выражение, представленное графически:

Regular expression visualization

1 голос
/ 20 октября 2013

Попробуйте это более надежное регулярное выражение:

Regex

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


Описание

Regular expression visualization


Демо

Демо Debuggex

0 голосов
/ 18 января 2018

Не удалось выполнить проверку имени пути "/", когда я запустил свое приложение в режиме отладки / предварительного просмотра из своей онлайн-среды IDE.Другими словами, он обычно подается с чистым URL (нет .html), за исключением случаев, когда я передаю его из Cloud9, в этом случае он подается с index.html.

Итак, это работает для меня:1005 *

if(window.location.pathname.length == 1 || window.location.pathname.length == 0 || window.location.pathname === "/index.html" || window.location.pathname === "/index"){ //I'm at the app root }

0 голосов
/ 12 ноября 2011

Я думаю

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

Редактировать: Не используйте это, см. Комментарий

0 голосов
/ 12 ноября 2011

С регулярным выражением типа:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...