Как проверить, содержит ли URL заданную строку? - PullRequest
323 голосов
/ 04 января 2011

Как я мог сделать что-то вроде этого:

<script type="text/javascript">
$(document).ready(function () {
    if(window.location.contains("franky")) // This doesn't work, any suggestions?
    {
         alert("your url contains the name franky");
    }
});
</script>

Ответы [ 16 ]

586 голосов
/ 04 января 2011

Вам нужно добавить свойство href и установить indexOf вместо contains

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
  $(document).ready(function() {
    if (window.location.href.indexOf("franky") > -1) {
      alert("your url contains the name franky");
    }
  });
</script>
93 голосов
/ 04 января 2011
if (window.location.href.indexOf("franky") != -1)

сделает это.Кроме того, вы можете использовать регулярное выражение:

if (/franky/.test(window.location.href))
22 голосов
/ 04 января 2011

вроде так:

    <script type="text/javascript">
        $(document).ready(function () {
            if(window.location.href.indexOf("cart") > -1) 
            {
                 alert("your url contains the name franky");
            }
        });
    </script>
22 голосов
/ 04 января 2011

Вы бы использовали indexOf следующим образом:

if(window.location.href.indexOf("franky") != -1){....}

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

if(window.location.toString().indexOf("franky") != -1){....}
11 голосов
/ 04 января 2011

window.location не является строкой, но имеет метод toString().Поэтому вы можете сделать это следующим образом:

(''+window.location).includes("franky")

или

window.location.toString().includes("franky")

Из старых документов Mozilla :

Объекты местоположенияесть метод toString, возвращающий текущий URL.Вы также можете назначить строку для window.location.Это означает, что вы можете работать с window.location, как если бы это была строка в большинстве случаев.Иногда, например, когда вам нужно вызвать метод String, вы должны явно вызвать toString.

8 голосов
/ 20 ноября 2014

Регулярное выражение:

var matches = !!location.href.match(/franky/); //a boolean value now

Или в простом выражении вы можете использовать:

if (location.href.match(/franky/)) {

Я использую это, чтобы проверить, работает ли веб-сайт локально или на сервере:

location.href.match(/(192.168|localhost).*:1337/)

Это проверяет, содержит ли href либо 192.168, либо localhost AND, а затем :1337.

Как видите, использование регулярных выражений имеет свои преимущества перед другими решениями, когда условие становится немного сложнее.

6 голосов
/ 15 января 2014

Попробуйте, это короче и работает точно так же, как window.location.href:

if (document.URL.indexOf("franky") > -1) { ... }

также, если вы хотите проверить предыдущий URL:

if (document.referrer.indexOf("franky") > -1) { ... }
6 голосов
/ 07 июня 2012

document.URL должен принести вам URL и

if(document.URL.indexOf("searchtext") != -1) {
    //found
} else {
    //nope
} 
4 голосов
/ 19 января 2017

легче становится

<script type="text/javascript">
$(document).ready(function () {
    var url = window.location.href;
    if(url.includes('franky'))    //includes() method determines whether a string contains specified string.
    {
         alert("url contains franky");
    }
});
</script>
3 голосов
/ 04 января 2011

Попробуйте indexOf

if (foo.indexOf("franky") >= 0)
{
  ...
}

Вы также можете попробовать поиск (для регулярных выражений)

if (foo.search("franky") >= 0)
{
  ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...