Ich würde vorschlagen, Inline-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 .
Das oben Gesagte wurde aktualisiert, um Platz zu sparen, obwohl Klarheit / Funktion erhalten bleiben:
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 .
Ein etwas verspätetes Update, das verwendet werden kann addEventListener()
(wie von bažmegakapa in den Kommentaren unten vorgeschlagen):
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 bindet eine Funktion an das Ereignis jeder einzelnen Verbindung; Dies ist möglicherweise ziemlich verschwenderisch, wenn Sie die Ereignisbehandlung (mithilfe der Delegierung) an ein Vorgängerelement wie das folgende binden können:
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 das body
Element angehängt ist, das normalerweise eine Vielzahl anderer anklickbarer Elemente enthält, habe ich eine Zwischenfunktion ( actionToFunction
) verwendet, um zu bestimmen, was mit diesem Klick geschehen soll. Wenn das angeklickte Element ein Link ist und daher ein tagName
von hat a
, wird die Klickbehandlung an die reallySure()
Funktion übergeben.
Verweise: