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>
289
demandé sur Smi 2011-01-04 21:31:05

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>
525
répondu J.W. 2012-07-10 03:37:48
if (window.location.href.indexOf("franky") != -1)

le ferait. Vous pouvez également utiliser un regexp:

if (/franky/.test(window.location.href))
77
répondu NickFitz 2015-07-07 13:57:19

vous utiliseriez indexOf comme ceci:

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

notez aussi l'ajout de href pour la chaîne sinon vous feriez:

if(window.location.toString().indexOf("franky") != -1){....}
19
répondu Sarfraz 2011-01-04 18:34:03

comme suit:

    <script type="text/javascript">
        $(document).ready(function () {
            if(window.location.href.indexOf("cart") > -1) 
            {
                 alert("your url contains the name franky");
            }
        });
    </script>
19
répondu Adrian Gonzales 2016-03-17 11:03:39

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.

8
répondu Stephan Bijzitter 2017-05-08 19:39:21

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.

8
répondu Alin Purcaru 2017-08-01 03:45:27

document.URL devrait vous obtenir le URL et

if(document.URL.indexOf("searchtext") != -1) {
    //found
} else {
    //nope
} 
6
répondu Suman 2012-06-07 20:18:55

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) { ... }
6
répondu sixstarpro 2014-01-23 09:19:23

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> 
3
répondu Chandu 2011-01-04 18:36:36

Try indexOf

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

vous pouvez également essayer recherche (pour les expressions régulières)

if (foo.search("franky") >= 0)
{
  ...
}
3
répondu Yoni Baciu 2011-01-04 18:37:59

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');
}
2
répondu Ron Royston 2016-07-31 23:04:19

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>
2
répondu Vishnu Dev 2017-01-19 20:05:36

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");
}
1
répondu Sudharsan S 2015-06-01 06:58:26

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');
                }
1
répondu alemac852 2017-09-18 09:04:04

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

1
répondu Regular Joe 2017-11-03 18:15:56

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

0
répondu Dhiraj Himani 2017-11-03 18:11:47