web-dev-qa-db-pt.com

Como verificar se o URL contém uma determinada string?

Como eu poderia fazer algo assim:

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

Você precisa adicionar a propriedade href e verificar indexOf em vez de contains

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

faria isso. Alternativamente, você poderia usar um regexp:

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

igual a:

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

Você usaria indexOf assim:

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

Observe também a adição de href para a string, caso contrário você faria:

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

window.location não é uma String, mas tem um método toString(). Então você pode fazer assim:

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

ou

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

Do antigo Mozilla docs :

Objetos de localização têm um método toString retornando o URL atual. Você também pode atribuir uma string a window.location. Isso significa que você pode trabalhar com window.location como se fosse uma string na maioria dos casos. Às vezes, por exemplo, quando você precisa chamar um método String, é necessário chamar explicitamente toString.

11
Alin Purcaru

A maneira regex:

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

Ou, em uma declaração simples, você poderia usar:

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

Eu uso isso para testar se o site está sendo executado localmente ou em um servidor:

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

Isso verifica se href contém 192.168 ou localhost AND é seguido por :1337.

Como você pode ver, usar o regex tem suas vantagens sobre as outras soluções quando a condição fica um pouco mais complicada.

8
Stephan Bijzitter

Tente isso, é mais curto e funciona exatamente como window.location.href:

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

também se você quiser verificar o URL anterior:

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

document.URL deve obter o URL e

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

Mais fácil fica

<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>
4
Vishnu Dev

Tente isto:

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

Tente indexOf

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

Você também pode tentar pesquisar (para expressões regulares)

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

Eu gosto de criar um boolean e depois usar isso em um if lógico.

//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');
}
2
Ron Royston

Use Window.location.href para pegar a url em javascript. é uma propriedade que informa a localização atual do URL do navegador. Definir a propriedade para algo diferente redirecionará a página.

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

Coloque no seu arquivo 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');
                }
1
alemac852

Expressões regulares serão mais ideais para muitas pessoas por causa dos limites do Word \b ou dispositivos semelhantes. Os limites de palavras ocorrem quando qualquer um dos 0-9, a-z, A-Z, _ estão em esse lado da próxima correspondência, ou quando um caractere alfanumérico se conecta a uma linha ou cadeia de fim ou início.

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

Se você usar if(window.location.href.indexOf("sam"), obterá correspondências para flotsam e same, entre outras palavras. tom combinaria tomate e amanhã, sem regex.

Tornar as maiúsculas e minúsculas é tão simples quanto remover o i.

Além disso, adicionar outros filtros é tão fácil quanto

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

Vamos falar sobre (?:\b|_). RegEx normalmente define _ como um Word character para que não cause um limite do Word. Usamos este (?:\b|_) para lidar com isso. Para ver se ele encontra \b ou _ em ambos os lados da string.

Outros idiomas podem precisar usar algo como

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

Tudo isso é mais fácil do que dizer

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

Outros tipos de expressões regulares suportam \p{L}, mas o javascript não, o que tornaria a tarefa de detectar caracteres estrangeiros muito mais fácil. Algo como [^\p{L}](filters|in|any|alphabet)[^\p{L}]

1
Regular Joe

Suponha que você tenha esse 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>

E o formulário de URL é www.localhost.com/web_form_response.html?text_input=stack&over=flow

O texto escrito para <p id="response"> será stack

0
Dhiraj Himani