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>
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>
if (window.location.href.indexOf("franky") != -1)
le ferait. Alternativement, vous pouvez utiliser une expression rationnelle:
if (/franky/.test(window.location.href))
ainsi:
<script type="text/javascript">
$(document).ready(function () {
if(window.location.href.indexOf("cart") > -1)
{
alert("your url contains the name franky");
}
});
</script>
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){....}
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.
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.
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) { ... }
document.URL
devrait vous donner le URL
et
if(document.URL.indexOf("searchtext") != -1) {
//found
} else {
//nope
}
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>
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>
Essayez indexOf
if (foo.indexOf("franky") >= 0)
{
...
}
Vous pouvez également essayer la recherche (pour les expressions régulières)
if (foo.search("franky") >= 0)
{
...
}
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');
}
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");
}
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 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}]
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