Ich würde vorschlagen, in-line JavaScript zu vermeiden:
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 Demo .
Die obigen Angaben wurden aktualisiert, um den Platzbedarf zu verringern, wobei die Klarheit/Funktion beibehalten wurde:
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 Demo .
Eine etwas verspätete Aktualisierung, um die addEventListener()
(wie vorgeschlagen, von bažmegakapa (in den Kommentaren unten):
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 Demo .
Das obige Beispiel bindet eine Funktion an das Ereignis jedes einzelnen Links, was potenziell ziemlich verschwenderisch ist, wenn Sie die Ereignisbehandlung (unter Verwendung der Delegation) an ein Vorgängerelement binden könnten, wie z. B. das folgende:
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 Demo .
Da die Ereignisbehandlung an den body
Element, das normalerweise eine Vielzahl anderer, anklickbarer Elemente enthält, habe ich eine Zwischenfunktion verwendet ( actionToFunction
), um zu bestimmen, was mit diesem Klick geschehen soll. Wenn das angeklickte Element ein Link ist und daher eine tagName
von a
wird die Klick-Behandlung an den reallySure()
Funktion.
Referenzen: