местоположение JavaScript

Это проверяет, "если мы идем movies.php страница":

if (location.href.match(/movies.php/)) {
// something happens
}

как добавить для этого (как or) "если мы идем music.php страница"?

1
задан Happy 14 June 2010 в 21:52
поделиться

3 ответа

Я полагаю, вы имеете в виду, что хотите узнать, находитесь ли вы на movies.php или на music.php ? Значит, вы хотите сделать то же самое, если вы в любом из них?

if (location.href.match(/movies\.php/) || location.href.match(/music\.php/)) {
// something happens
}

Или, если вы хотите сделать что-то другое, вы можете использовать else if

if (location.href.match(/movies\.php/)) {
// something happens
}

else if(location.href.match(/music\.php/)) {
// something else happens
}

Кроме того, вместо использования match вы можете использовать test :

if (/movies\.php/.test(location.href) || /music\.php/.test(location.href)) {
// something happens
}

Основываясь на ответе Пола, вы можете уточнить регулярные выражения в операторе if , который проверяет, находитесь ли вы на любой странице, до одного регулярного выражения :

/(music|movies)\.php/
1
ответ дан 2 September 2019 в 23:46
поделиться

Следующее улучшает предыдущие ответы несколькими способами ...

if (/(movies|music)\.php$/.test(location.pathname)) {
    var pageName = RegExp.$1; // Will be either 'music' or 'movies'
}
  • Предоставляет имя страницы (без расширения .php) через свойство RegExp. $ 1
  • Использование location.pathname устраняет посторонние совпадения по возможным параметрам запроса (например, "...? redirect = music.php")
  • Использование регулярное выражение '|' оператор объединяет тесты в одно регулярное выражение (особенно хорошо, если у вас много страниц, которые вы хотите сопоставить)
  • Использование оператора регулярного выражения '$' ограничивает совпадение до конца имени пути (позволяет избежать посторонних совпадений в середине пути. Не очень вероятно в вашем примере, но хорошая практика)
0
ответ дан 2 September 2019 в 23:46
поделиться

Как насчет ..

if (/(movies\.php|music\.php)/.test(location.href)) {
// Do something
}

Или даже лучше ...

if (/(movies|music)\.php/).test(location.href)) {
// Do something
}

Обратите внимание на \., Это буквально соответствует "одной точке", где, как в регулярном выражении. соответствует любому символу, поэтому они верны, но, вероятно, не то, что вы хотите ...

if (/movies.php/.test('movies_php')) alert(0);
if (/movies.php/.test('movies/php')) alert(0);
1
ответ дан 2 September 2019 в 23:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: