非侵入式JavaScript
最好的做法是将事件处理方法添加到链接。
confirm()函数产生你描述的对话框,并根据用户的选择返回true或false。
链接上的事件处理程序方法有一个特殊的行为,即如果它们返回false,它们会终止链接操作。
var link = document.getElementById('confirmToFollow');
link.onclick = function() {
return confirm("Are you sure?");
};
如果您希望链接需要Javascript,在HTML必须进行编辑。删除的href:
<a href="#" id="confirmToFollow"...
您可以明确地设置在事件处理程序的链接目标:
var link = document.getElementById('confirmToFollow');
link.onclick = function() {
if(confirm("Are you sure?")) {
window.location = "http://www.stackoverflow.com/";
}
return false;
};
如果你想叫多个链路上的同样的方法,你可以获取链接的节点列表你希望,并通过节点列表的方法应用到每一个你的循环:
var allLinks = document.getElementsByTagName('a');
for (var i=0; i < allLinks.length; i++) {
allLinks[i].onclick = function() {
return confirm("Are you sure?");
};
}
有同样的想法的进一步排列在这里,如使用类名来决定哪些链接将监听该方法,并根据其他一些标准将唯一位置传递给每个位置。他们是六个中的一个,另一个是六个。
选择性方法(不鼓励实践):
一个气馁实践是经由附加一个方法onclick属性:
<a href="mypage.html" onclick="...
另一个气馁实践是设置函数调用href属性:
<a href="javascript: confirmLink() ...
请注意,这些劝阻做法都是可行的解决方案。
这个没什么问题。如果您不需要,请不要陷入JavaScript完整功能集的复杂性中。 – dacracot 2008-11-05 22:19:55