Как проверить, содержит ли URL указанную строку?

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

<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>

Ответ 1

Вам нужно добавить свойство 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>

Ответ 2

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

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

if (/franky/.test(window.location.href))

Ответ 3

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

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

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

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

Ответ 4

так:

    <script type="text/javascript">
        $(document).ready(function () {
            if(window.location.href.indexOf("cart") > -1) 
            {
                 alert("your url contains the name franky");
            }
        });
    </script>

Ответ 5

window.location не является строкой, но имеет метод toString(). Так что вы можете сделать это так:

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

или же

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

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

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

Ответ 6

Регулярный путь:

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 И за ним следует :1337.

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

Ответ 7

document.URL должен получить URL и

if(document.URL.indexOf("searchtext") != -1) {
    //found
} else {
    //nope
} 

Ответ 8

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

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

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

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

Ответ 9

Легче он получает

<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>

Ответ 10

Попробуйте следующее:

<script type="text/javascript">             
    $(document).ready
    (
        function () 
        { 
            var regExp = /franky/g;
            var testString = "something.com/frankyssssddsdfjsdflk?franky";//Inyour case it would be window.location;
            if(regExp.test(testString)) // This doesn't work, any suggestions.                 
            {                      
                alert("your url contains the name franky");                 
            }             
        }
    );         
</script> 

Ответ 11

Попробуйте indexOf

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

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

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

Ответ 12

Мне нравится создавать boolean, а затем использовать это в логическом if.

//kick unvalidated users to the login page
var onLoginPage = (window.location.href.indexOf("login") > -1);

if (!onLoginPage) {
  console.log('redirected to login page');
  window.location = "/login";
} else {
  console.log('already on the login page');
}

Ответ 13

Используйте Window.location.href, чтобы взять URL-адрес в javascript. это свойство, которое сообщит вам текущее местоположение URL-адреса браузера. Установка свойства на что-то другое приведет к перенаправлению страницы.

if (window.location.href.indexOf('franky') > -1) {
     alert("your url contains the name franky");
}

Ответ 14

Вставьте файл js

                var url = window.location.href;
                console.log(url);
                console.log(~url.indexOf("#product-consulation"));
                if (~url.indexOf("#product-consulation")) {
                    console.log('YES');
                    // $('html, body').animate({
                    //     scrollTop: $('#header').offset().top - 80
                    // }, 1000);
                } else {
                    console.log('NOPE');
                }

Ответ 15

Регулярные выражения будут более оптимальными для многих людей из-за границ слов \b или подобных устройств. Границы Word встречаются, если на одной стороне следующего совпадения находятся какие-либо из 0-9, a-z, a-z, _ или когда алфавитно-цифровой символ соединяется с линией или строкой или начинается.

if (location.href.match(/(?:\b|_)franky(?:\b|_)))

Если вы используете if(window.location.href.indexOf("sam"), вы получите совпадения для flotsam и same, между прочим. tom будет соответствовать томату и завтра, без регулярного выражения.

Сделать регистр с учетом регистра так же просто, как удалить i.

Кроме того, добавление других фильтров так же просто, как

if (location.href.match(/(?:\b|_)(?:franky|bob|billy|john|steve)(?:\b|_)/i))

Расскажите о (?:\b|_). RegEx обычно определяет _ как word character, поэтому он не вызывает границы слова. Мы используем этот (?:\b|_), чтобы справиться с этим. Чтобы узнать, не находит ли он \b или _ по обе стороны строки.

На других языках может потребоваться что-то вроде

if (location.href.match(/([^\wxxx]|^)(?:franky|bob|billy|john|steve)([^\wxxx]|$)/i))
//where xxx is a character representation (range or literal) of your language alphanumeric characters.

Все это проще, чем говорить

var x = location.href // just used to shorten the code
x.indexOf("-sam-") || x.indexOf("-sam.") || x.indexOf(" sam,") || x.indexOf("/sam")...
// and other comparisons to see if the url ends with it 
// more for other filters like frank and billy

Дружественные языки для регулярных выражений поддерживают \p{L}, но javascript этого не делает, что облегчит задачу обнаружения иностранных символов. Что-то вроде [^\p{L}](filters|in|any|alphabet)[^\p{L}]

Ответ 16

Предположим, что у вас есть этот script

<div>
  <p id="response"><p>
  <script>
    var query = document.location.href.substring(document.location.href.indexOf("?") + 1);
    var text_input = query.split("&")[0].split("=")[1];
    document.getElementById('response').innerHTML=text_input;
  </script> </div>

И форма url www.localhost.com/web_form_response.html?text_input=stack&over=flow

Текст, записанный на <p id="response">, будет stack