web-dev-qa-db-fra.com

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

Vous devez ajouter la propriété href et cocher 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>
580
J.W.
if (window.location.href.indexOf("franky") != -1)

le ferait. Alternativement, vous pouvez utiliser une expression rationnelle:

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

ainsi:

    <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

Vous utiliseriez indexOf comme ceci:

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

Notez également l'ajout de href pour la chaîne sinon vous feriez:

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

window.location n'est pas une chaîne, mais une méthode toString(). Donc, vous pouvez le faire comme ça:

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

ou

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

De la anciens documents Mozilla :

Les objets location ont une méthode toString renvoyant l'URL actuelle. Vous pouvez également affecter une chaîne à window.location. Cela signifie que vous pouvez utiliser window.location comme s'il s'agissait d'une chaîne dans la plupart des cas. Parfois, par exemple, lorsque vous devez appeler une méthode String, vous devez explicitement appeler toString.

11
Alin Purcaru

La manière regex:

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

Ou dans une simple déclaration, vous pouvez utiliser:

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

J'utilise ceci pour tester si le site Web est en cours d'exécution localement ou sur un serveur:

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

Ceci vérifie si href contient 192.168 ou localhost AND et est suivi de :1337.

Comme vous pouvez le constater, l'utilisation de regex présente des avantages par rapport aux autres solutions lorsque la situation devient un peu plus compliquée.

8
Stephan Bijzitter

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
sixstarpro

document.URL devrait vous donner le URL et

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

Plus facile ça devient

<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

Essaye ça:

<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

Essayez indexOf

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

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

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

J'aime créer un boolean, 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
Ron Royston

Utilisez Window.location.href pour prendre l’URL en javascript. c'est une propriété qui vous indiquera l'emplacement actuel de l'URL du navigateur. Si vous définissez une propriété différente, la page sera redirigée.

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

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
alemac852

Les expressions régulières seront plus optimales pour un grand nombre de personnes en raison des limites de Word \b ou de périphériques similaires. Les limites de mot se produisent lorsque l'un des 0-9, a-z, A-Z, _ est sur de ce côté de la correspondance suivante, ou lorsqu'un caractère alphanumérique se connecte à la fin de la ligne ou de la chaîne.

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

Si vous utilisez if(window.location.href.indexOf("sam"), vous obtiendrez des correspondances pour flotsam et same, entre autres. tom correspondrait à la tomate et demain, sans regex.

La rendre sensible à la casse est aussi simple que de supprimer le i.

De plus, ajouter d'autres filtres est aussi simple que

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

Parlons de (?:\b|_). RegEx définit généralement _ en tant que Word character afin de ne pas créer de limite de Word. Nous utilisons ce (?:\b|_) pour régler ce problème. Pour voir si elle trouve \b ou _ de part et d'autre 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 variantes d’expressions régulières prises en charge par d’autres langues prennent en charge \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}]

1
Regular Joe

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 de l'URL est www.localhost.com/web_form_response.html?text_input=stack&over=flow

Le texte écrit dans <p id="response"> sera stack

0
Dhiraj Himani