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>
javascript
jquery
url
RayLoveless
fonte
fonte
"window.location.contains is not a function"
Respostas:
Você precisa adicionar a propriedade href e marcar em
indexOf
vez decontains
fonte
window.location.hash
nãowindow.location.href
. Simplesmente troque esses valores na função do OP..href.indexOf("franky")
pode retornar um valor 0 se.href
começar com "franky". Obviamente, nesse caso, ele nunca.href
inicia como sempre começa com o protocolo, geralmente "http:" ou "file:". Apesar disso, você SEMPRE deve usar> -1,> = 0 ou, minha preferência,! == - 1 ao comparar com o resultado deindexOf()
.faria isso. Como alternativa, você pode usar um regexp:
fonte
Você usaria
indexOf
assim:Observe também a adição de
href
para a string, caso contrário, você faria:fonte
igual a:
fonte
window.location.href
é uma abreviatura dewindow.location
developer.mozilla.org/en-US/docs/Web/API/Window.locationif
declaração. Para ter certeza de que possui os dois, você pode usar o operador AND, que está&&
em Javascript:if( window.location.href.indexOf("cart") > -1 && window.location.href.indexOf("box") > -1 )
para verificar se ele possui um ou outro valor, use o operador OR, que possui dois caracteres de pipe||
if( window.location.href.indexOf("cart") > -1 || window.location.href.indexOf("box") > -1 )
window.location
não é uma String, mas tem umtoString()
método. Então você pode fazer assim:ou
Dos documentos antigos do Mozilla :
fonte
A maneira regex:
Ou, em uma declaração simples, você pode usar:
Eu uso isso para testar se o site está sendo executado localmente ou em um servidor:
Isso verifica se o href contém
192.168
oulocalhost
AND é seguido por:1337
.Como você pode ver, o uso do regex tem vantagens sobre as outras soluções quando a condição fica um pouco mais complicada.
fonte
if(/franky/.test(location.href)) { /* regex matched */ }
se não estiver fazendo nada com as partidas.test
é definitivamente mais limpo do quematch
neste caso.document.URL
deverá fazê-lo oURL
efonte
Tente isso, é mais curto e funciona exatamente como
window.location.href
:Além disso, se você quiser verificar o URL anterior:
fonte
document.referrer
são completamente irrelevantes para a pergunta.Mais fácil fica
fonte
Tente o seguinte:
fonte
Tente indexOf
Você também pode tentar pesquisar (por expressões regulares)
fonte
fonte
Eu gosto de criar um
boolean
e depois usá-lo de forma lógicaif
.fonte
Coloque no seu arquivo js
fonte
~
, então procurei: "~
é um truque para transformarindexOf()
o valor de retorno encontrado em verdade (ao mesmo tempo em que não é encontrado como falso). As pessoas o usam como efeito colateral de truncar números ..." - stackoverflow.com/a/12299678/3917091Expressões regulares serão mais ideais para muitas pessoas devido a limites de palavras
\b
ou dispositivos semelhantes. Limites de palavra ocorrer quando qualquer um0-9
,a-z
,A-Z
,_
estão em que o lado do próximo jogo, ou quando um alfanuméricos Ligações personagem a linha ou fim string ou começando.Se você usar
if(window.location.href.indexOf("sam")
, receberá correspondências paraflotsam
esame
, entre outras palavras.tom
combinaria tomate e amanhã, sem regex.Tornar a distinção entre maiúsculas e minúsculas é tão simples quanto remover o
i
.Além disso, adicionar outros filtros é tão fácil quanto
Vamos conversar
(?:\b|_)
. RegEx normalmente define_
como um,word character
para que não cause um limite de palavras. Usamos isso(?:\b|_)
para lidar com isso. Para ver se encontra\b
ou_
em ambos os lados da cadeia.Outros idiomas podem precisar usar algo como
Tudo isso é mais fácil do que dizer
Os sabores de expressões regulares de outros idiomas são compatíveis,
\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}]
fonte
(?#comments)
e espaçamento livre# comments
como javascript. No entanto, este não é difícil de ler. // Quando uso um regex complexo em javascript, mantenho uma cópia comentada que posso editar lol.Suponha que você tenha esse script
E o formulário do URL é
www.localhost.com/web_form_response.html?text_input=stack&over=flow
O texto escrito para
<p id="response">
serástack
fonte
Será uma boa prática se você converter sua string para maiúsculas ou minúsculas, pois o método indexof () diferencia maiúsculas de minúsculas. Isso ocorrerá se a sua pesquisa não for sensível a maiúsculas e minúsculas. Portanto, para uma pesquisa que não diferencia maiúsculas de minúsculas, será:
fonte