Sugeriría evitar JavaScript en línea:
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;
}
};
}
Demostración de JS Fiddle .
Lo anterior actualizado para reducir el espacio, aunque manteniendo la claridad / función:
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?");
};
}
Demostración de JS Fiddle .
Una actualización algo tardía, para usar addEventListener()
(como se sugiere, por bažmegakapa , en los comentarios a continuación):
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);
}
Demostración de JS Fiddle .
Lo anterior vincula una función al evento de cada enlace individual; lo cual es potencialmente un desperdicio, cuando podría vincular el manejo de eventos (mediante delegación) a un elemento ancestro, como el siguiente:
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);
Demostración de JS Fiddle .
Debido a que el manejo de eventos está asociado al body
elemento, que normalmente contiene una gran cantidad de otros elementos en los que se puede hacer clic, he usado una función provisional ( actionToFunction
) para determinar qué hacer con ese clic. Si el elemento cliqueado es un enlace y, por lo tanto, tiene un tagName
de a
, el manejo de clics se pasa a la reallySure()
función.
Referencias