J'essayais de faire un script de galerie javascript par moi-même. Quand j'en ai fini, j'étais plutôt content, jusqu'à ce que je remarque, que ça ne marche pas dans IE6. Dans FireFox tout semble bien. J'ai donc commencé le débogage.JavaScript Fonction de rappel et événements
J'ai remarqué que setAttribute est l'un des problèmes à coup sûr. Peut-être même le plus grand. Donc, après avoir regardé un interetsing article sur la définition de la propriété onclick avec des paramètres, j'étais plutôt content, mais une chose restait non résolue pour moi. L'utilisation de la méthode de rappel est difficile, mais je ne sais pas comment passer un objet événement de cette façon. Voici l'ancien exemple de code:
var miniatury = document.getElementsByTagName ("a");
function zoom(){
for (l = 0; l < miniatury.length; l++) {
if (miniatury[l].className.match("zoom") != null ) {
var href = miniatury[l].href;
if (document.images) {
preImg[l] = new Image();
preImg[l].src = href;
miniatury[l].setAttribute("onclick", "przybliz(preImg["+[l]+"].src, event); event.returnValue=false; return false;");
}
else {
miniatury[l].setAttribute("onclick", "przybliz(href, event); event.returnValue=false; return false;");}
}
}
}
function przybliz(adres, event) {
pojemnik.style.display = 'block';
if (navigator.appName == "Microsoft Internet Explorer") {
pozycjaX= window.event.clientX + document.documentElement.scrollLeft
+ document.body.scrollLeft;
pozycjaY= window.event.clientY + document.documentElement.scrollTop
+ document.body.scrollTop;
}
if (navigator.appName != "Microsoft Internet Explorer") {
pozycjaX = event.clientX + window.scrollX;
pozycjaY = event.clientY + window.scrollY;
}
pojemnik.style.top = pozycjaY+'px';
pojemnik.style.left = pozycjaX+'px';
Question est: Comment changer le code dans
onclick = rappel (f, arguments)
avec passage des valeurs d'objet d'événement, et avoir le luxe de les utiliser plus tard?
C'est l'un de ces domaines où le faire vous-même est très difficile à obtenir correctement (comme, disons, écrire une file d'attente multithread). Utilisez la fonction d'une bibliothèque pour bien faire les choses, car il y a beaucoup plus de personnes qui font des bogues sur jQuery que de bugtesting votre application. –
Merci Anthony. Votre réponse a été utile. Je veux dire que cela ne fonctionne pas maintenant, mais je suppose que depuis javascript de base n'a pas une solution claire et simple pour mon problème ... est maintenant le bon moment pour moi d'en apprendre plus sur jQuery ou d'autres bibliothèques. Peu de temps après, je reviendrai sur ce problème avec une vue différente. – Luigi