不显眼的 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;
};
如果你想在多个链接上调用相同的方法,你可以获取你想要的链接的 nodeList,并在循环通过 nodeList 时将方法应用于每个链接:
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() ...
请注意,这些不鼓励的做法都是可行的解决方案。