5 votes

L'URL peut-elle demander à jQuery d'exécuter une fonction ?

J'ai une question concernant l'URL et jQuery.

Puis-je spécifier une URL pour demander à jQuery d'exécuter une fonction ?

Par exemple http://www.website.com/about.html?XYZ

pour exécuter une fonction XYZ(); ?

10voto

jfriend00 Points 152127

Vous pouvez insérer dans cette page web un code qui examine les paramètres de requête de l'URL et qui, en fonction de ce qu'il trouve, appelle la fonction javascript de votre choix.

Dans votre exemple particulier, une version simplifiée serait la suivante :

// code that runs when page is loaded:
if (window.location.search == "?XYZ") {
    XYZ();
}

ou si vous voulez qu'il exécute n'importe quelle fonction présente, vous pouvez l'extraire de la chaîne et exécuter n'importe quel nom qui s'y trouve.

// code that runs when page is loaded:
if (window.location.search.length > 1) {
    var f = window.location.search.substr(1);  // strip off leading ?
    try {
        eval(f + "()");  // be careful here, this allows injection of javascript into your page
    } catch(e) {/* handler errors here */}
}

Le fait d'autoriser l'exécution d'un code javascript arbitraire dans votre page peut ou non avoir des implications indésirables en matière de sécurité. Il serait préférable (si possible) de ne prendre en charge qu'un ensemble spécifique de fonctions préexistantes que vous recherchez et dont vous savez qu'elles sont sûres, plutôt que d'exécuter du javascript arbitraire comme dans le deuxième exemple.

2voto

Neal Points 68710

Dans la barre d'URL, vous pouvez toujours mettre javascript:XYZ();

Essayez-le après le chargement de l'url : http://jsfiddle.net/maniator/mmAxY/show/

0voto

Jason Spick Points 657

C'est ce que je crois :

if(location.href == ""){
    xyz();
else{

}

0voto

karim79 Points 178055

Vous pouvez appeler une fonction déclarée globalement en utilisant l'objet fenêtre :

function bar(str) {
    alert("hello" + str);   
}

// assuming location is "http://example.com?bar"
var fn = window.location.search.replace("?", "");
window[fn](" Dovhakiin"); // 'hello Dovhakiin'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X