Je vous conseille d'éviter, dans la ligne de JavaScript:
var aElems = document.getElementsByTagName('a');
for (var i = 0, len = aElems.length; i < len; i++) {
aElems[i].onclick = function() {
var check = confirm("Are you sure you want to leave?");
if (check == true) {
return true;
}
else {
return false;
}
};
}
JS Fiddle démo.
Le ci-dessus mis à jour afin de réduire l'espace, tout en conservant la clarté/fonction:
var aElems = document.getElementsByTagName('a');
for (var i = 0, len = aElems.length; i < len; i++) {
aElems[i].onclick = function() {
return confirm("Are you sure you want to leave?");
};
}
JS Fiddle démo.
Un peu lent à jour, utiliser addEventListener()
(comme l'a suggéré, par bažmegakapa, dans les commentaires ci-dessous):
function reallySure (event) {
var message = 'Are you sure about that?';
action = confirm(message) ? true : event.preventDefault();
}
var aElems = document.getElementsByTagName('a');
for (var i = 0, len = aElems.length; i < len; i++) {
aElems[i].addEventListener('click', reallySure);
}
JS Fiddle démo.
Le ci-dessus se lie d'une fonction à l'événement de chaque lien, ce qui est potentiellement très coûteuses lorsque vous pouvez lier la gestion des événements (par délégation) à un élément ancêtre, telles que les suivantes:
function reallySure (event) {
var message = 'Are you sure about that?';
action = confirm(message) ? true : event.preventDefault();
}
function actionToFunction (event) {
switch (event.target.tagName.toLowerCase()) {
case 'a' :
reallySure(event);
break;
default:
break;
}
}
document.body.addEventListener('click', actionToFunction);
JS Fiddle démo.
Parce que la gestion des événements est attaché à l' body
élément, qui contient normalement une foule d'autres, cliquable, les éléments que j'ai utilisé un intermédiaire de la fonction (actionToFunction
) de déterminer quoi faire avec cela, cliquez sur. Si l'élément est cliqué un lien, et, par conséquent, tagName
de a
, le click-la manipulation est passé à l' reallySure()
fonction.
Références: