Comment pourrais-je faire quelque chose comme ça:
<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
la source
la source
"window.location.contains is not a function"
Réponses:
Vous devez ajouter la propriété href et vérifier
indexOf
au lieu decontains
la source
window.location.hash
paswindow.location.href
. Échangez simplement ces valeurs dans la fonction OP..href.indexOf("franky")
peut renvoyer une valeur de 0 s'il.href
commence par "franky". Bien sûr, dans ce cas, il ne fait jamais comme.href
toujours commence par le protocole, généralement "http:" ou "file:". Malgré cela, vous devez TOUJOURS utiliser> -1,> = 0 ou, ma préférence,! == - 1 lors de la comparaison avec le résultat deindexOf()
.le ferait. Alternativement, vous pouvez utiliser une expression rationnelle:
la source
Vous utiliseriez
indexOf
comme ceci:Notez également l'ajout de
href
pour la chaîne sinon vous feriez:la source
ainsi:
la source
window.location.href
est un alias dewindow.location
developer.mozilla.org/en-US/docs/Web/API/Window.locationif
instruction. Pour vous assurer qu'il a les deux, vous pouvez utiliser l'opérateur AND, qui est&&
en Javascript:if( window.location.href.indexOf("cart") > -1 && window.location.href.indexOf("box") > -1 )
Pour vérifier s'il a l'une ou l'autre valeur, utilisez l'opérateur OR, qui est deux caractères de canal||
if( window.location.href.indexOf("cart") > -1 || window.location.href.indexOf("box") > -1 )
window.location
n'est pas une chaîne, mais il a unetoString()
méthode. Vous pouvez donc le faire comme ceci:ou
D'après les anciens documents de Mozilla :
la source
La manière regex:
Ou dans une simple déclaration, vous pouvez utiliser:
J'utilise ceci pour tester si le site Web fonctionne localement ou sur un serveur:
Ceci vérifie si le href contient soit
192.168
oulocalhost
AND soit suivi de:1337
.Comme vous pouvez le voir, l'utilisation de regex a ses avantages sur les autres solutions lorsque la condition devient un peu plus délicate.
la source
if(/franky/.test(location.href)) { /* regex matched */ }
si je ne fais rien avec les matchs.test
c'est définitivement plus propre quematch
dans ce cas.document.URL
devrait vous obtenir leURL
etla source
Essayez ceci, il est plus court et fonctionne exactement comme
window.location.href
:aussi si vous voulez vérifier l'URL précédente:
la source
document.referrer
sont absolument pas pertinentes pour la question.Plus c'est facile
la source
Essaye ça:
la source
Essayez indexOf
Vous pouvez également essayer la recherche (pour les expressions régulières)
la source
la source
J'aime créer un
boolean
, puis l'utiliser dans une logiqueif
.la source
Mettez votre fichier js
la source
~
, alors je l'ai recherché: "~
est une astuce pour transformerindexOf()
la valeur de retour trouvée en véridique (tout en la rendant non trouvée comme fausse). Les gens l'utilisent autrement pour son effet secondaire de tronquer les nombres ..." - stackoverflow.com/a/12299678/3917091Les expressions régulières seront plus optimales pour beaucoup de gens en raison des limites de mots
\b
ou d'appareils similaires. Limites de mots se produisent lorsque l' une0-9
,a-z
,A-Z
,_
sont sur ce côté du prochain match, ou quand un Connects de caractères alphanumériques à la ligne ou à la fin de chaîne ou de commencer.Si vous utilisez
if(window.location.href.indexOf("sam")
, vous obtiendrez des correspondances pourflotsam
etsame
, entre autres.tom
correspondrait à la tomate et demain, sans regex.Le rendre sensible à la casse est aussi simple que de supprimer le
i
.De plus, l'ajout d'autres filtres est aussi simple que
Parlons-en
(?:\b|_)
. RegEx définit généralement_
comme unword character
afin qu'il ne provoque pas de limite de mot. Nous l'utilisons(?:\b|_)
pour y faire face. Pour voir s'il trouve\b
ou_
de chaque côté de la chaîne.D'autres langues peuvent avoir besoin d'utiliser quelque chose comme
Tout cela est plus facile que de dire
Les versions d'autres langues prennent en charge les expressions régulières,
\p{L}
mais pas le javascript, ce qui faciliterait la tâche de détection des caractères étrangers. Quelque chose comme[^\p{L}](filters|in|any|alphabet)[^\p{L}]
la source
(?#comments)
et à espacement libre# comments
comme javascript. Cependant, celui-ci n'est pas difficile à lire. // Lorsque j'utilise une expression rationnelle complexe en javascript, je garde une copie commentée que je peux éditer lol.Supposons que vous ayez ce script
Et le formulaire URL est
www.localhost.com/web_form_response.html?text_input=stack&over=flow
Le texte écrit
<p id="response">
serastack
la source
Ce sera une bonne pratique si vous convertissez votre chaîne en minuscules ou en majuscules car la méthode indexof () est sensible à la casse. Ce sera le cas si votre recherche n'est pas sensible à la casse. Ainsi, pour une recherche qui ne sera pas sensible à la casse, ce sera:
la source