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 bodyelemento, 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 tagNamede a, el manejo de clics se pasa a la reallySure()función.
Referencias