Satır içi JavaScript'ten kaçınmayı öneririm:
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 demosu .
Yukarıdakiler, netliği / işlevi korurken alanı azaltmak için güncellendi:
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 demosu .
Kullanmak için biraz gecikmiş bir güncelleme addEventListener()
( aşağıdaki yorumlarda bažmegakapa tarafından önerildiği gibi):
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 demosu .
Yukarıdakiler her bir bağlantının olayına bir fonksiyon bağlar; bu, olay işlemeyi (delegasyon kullanarak) aşağıdakiler gibi bir üst öğeye bağlayabildiğinizde potansiyel olarak oldukça israflıdır:
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 demosu .
Olay işleme, body
normalde bir dizi başka tıklanabilir öğe içeren öğeye eklendiğinden actionToFunction
, bu tıklama ile ne yapılacağını belirlemek için bir ara işlev ( ) kullandım. Tıklanan öğe bir bağlantıysa ve bu nedenle de bir tagName
değeri varsa a
, tıklama işleme reallySure()
işleve iletilir .
Referanslar: