Comment vérifier si L'URL contient une chaîne donnée?
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>
16 réponses
vous devez ajouter la propriété href et cochez indexOf
au lieu de contains
<script type="text/javascript">
$(document).ready(function () {
if(window.location.href.indexOf("franky") > -1) {
alert("your url contains the name franky");
}
});
</script>
if (window.location.href.indexOf("franky") != -1)
le ferait. Vous pouvez également utiliser un regexp:
if (/franky/.test(window.location.href))
comme suit:
<script type="text/javascript">
$(document).ready(function () {
if(window.location.href.indexOf("cart") > -1)
{
alert("your url contains the name franky");
}
});
</script>
La regex:
var matches = !!location.href.match(/franky/); //a boolean value now
ou dans un simple énoncé vous pouvez utiliser:
if (location.href.match(/franky/)) {
Je l'utilise pour tester si le site web tourne localement ou sur un serveur:
location.href.match(/(192.168|localhost).*:1337/)
il s'agit de vérifier si le href contient soit 192.168
soit localhost
et est 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.
window.location
n'est pas une chaîne, mais il a une méthode toString()
. Donc vous pouvez le faire comme ceci:
(''+window.location).includes("franky")
ou
window.location.toString().includes("franky")
De la vieux Mozilla docs :
les objets de localisation ont un toString méthode retournant L'URL courante. Vous peut aussi assigner une chaîne à fenêtre.emplacement. Cela signifie que vous peut travailler avec fenêtre.l'emplacement, comme si il étaient une ficelle dans la plupart des cas. Parfois, par exemple quand vous avez besoin pour appeler une méthode de Chaîne, vous ont explicitement appeler toString.
document.URL
devrait vous obtenir le URL
et
if(document.URL.indexOf("searchtext") != -1) {
//found
} else {
//nope
}
essayez ceci, il est plus court et fonctionne exactement comme window.location.href
:
if (document.URL.indexOf("franky") > -1) { ... }
aussi si vous voulez vérifier L'URL précédente:
if (document.referrer.indexOf("franky") > -1) { ... }
essayez ceci:
<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>
Try indexOf
if (foo.indexOf("franky") >= 0)
{
...
}
vous pouvez également essayer recherche (pour les expressions régulières)
if (foo.search("franky") >= 0)
{
...
}
j'aime créer un boolean
et puis l'utiliser dans un if
logique .
//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');
}
plus facile il obtient
<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>
Utiliser La Fenêtre.emplacement.href prendre l'url en javascript. c'est un propriété qui vous indiquera l'adresse URL actuelle du navigateur. Définir la propriété à quelque chose de différent redirigera la page.
if (window.location.href.indexOf('franky') > -1) {
alert("your url contains the name franky");
}
mettez dans votre fichier 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');
}
les Expressions régulières seront plus optimales pour beaucoup de gens à cause des limites de mots \b
ou des dispositifs similaires. Les limites des mots se produisent lorsque l'un des 0-9
, a-z
, A-Z
, _
sont sur ce côté de la correspondance suivante, ou lorsqu'un caractère alphanumérique se connecte à la ligne ou à la fin ou au début de la chaîne.
if (location.href.match(/(?:\b|_)franky(?:\b|_)))
si vous utilisez if(window.location.href.indexOf("sam")
, vous obtiendrez des allumettes pour flotsam
et same
entre d'autres mots. tom
correspondrait à tomato et tomorrow, sans regex.
le rendre sensible à la casse est aussi simple que d'enlever le i
.
de plus, ajouter d'autres filtres est aussi facile que
if (location.href.match(/(?:\b|_)(?:franky|bob|billy|john|steve)(?:\b|_)/i))
parlons de (?:\b|_)
. RegEx définit généralement _
comme un word character
de sorte qu'il ne cause pas de limite de mots. Nous utilisons ce (?:\b|_)
pour faire face à cela. Pour voir si elle trouve \b
ou _
de chaque côté de la chaîne.
d'Autres langues peuvent avoir besoin d'utiliser quelque chose comme
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.
tout cela est plus facile que de dire
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
les saveurs des autres langues des Expressions régulières supportent \p{L}
mais javascript ne le fait pas, ce qui rendrait la tâche de détection des caractères étrangers beaucoup plus facile. Quelque chose comme [^\p{L}](filters|in|any|alphabet)[^\p{L}]
supposons que vous ayez ce 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>
et la forme url est www.localhost.com/web_form_response.html?text_input=stack&over=flow
le texte écrit à <p id="response">
sera stack