Javascript 使用DOM单击事件停用链接
这个问题主要是出于好奇(我对这个问题有不同的工作解决方案)。 尝试做一些基本的渐进式增强:一个表的每一行都应该可以使用JavaScript点击到另一个页面。对于不使用JavaScript的人,每行的第一列中都有一个链接。如果启用了JavaScript,则应禁用链接。其中一个简单的方法是Javascript 使用DOM单击事件停用链接,javascript,html,dom,dom-events,href,Javascript,Html,Dom,Dom Events,Href,这个问题主要是出于好奇(我对这个问题有不同的工作解决方案)。 尝试做一些基本的渐进式增强:一个表的每一行都应该可以使用JavaScript点击到另一个页面。对于不使用JavaScript的人,每行的第一列中都有一个链接。如果启用了JavaScript,则应禁用链接。其中一个简单的方法是 a.setAttribute("onclick", "return false;"); 初始化行上的单击事件后。但使用addEventListener来实现同样的效果似乎更为优雅 a.addEventListe
a.setAttribute("onclick", "return false;");
初始化行上的单击事件后。但使用addEventListener来实现同样的效果似乎更为优雅
a.addEventListener("click", function() { return false; }, false);
然而,后者不起作用。我相信这样做的原因是,可以通过这种方式添加多个事件侦听器,如果它们返回不同的真值,结果将是不明确的。这个假设是正确的还是我做错了什么?请解释这背后的内部工作原理
a.addEventListener("click", function(event) { event.preventDefault(); return false; }, false);
这应该适合你的需要
a、 setAttribute(“onclick”,“return false;”)
避免使用setAttribute,在处理HTML文档时不应该使用它,而且存在浏览器问题(尤其是IE,尤其是事件处理程序)。而是使用直接DOM HTML属性:
a.onclick= function() {
return false;
};
如果按照fphilipe的建议使用preventDefault(),则addEventListener是可以的,但在不支持DOM事件的IE中,需要attachEvent备份。如果只是尝试禁用链接,这可能会有点过头
就我个人而言,要禁用一个链接,我更愿意完全删除它,这样它就不再适用于像“在新窗口中打开”或“书签链接”这样的操作,而且它也不参与键盘的选项卡顺序
因此,您可以删除child(),或者用具有相同文本的span替换child,或者将文本从链接中踢出:
while (a.firstChild)
a.parentNode.insertBefore(a.firstChild, a);
a.parentNode.removeChild(a);
谢谢你的快速回答。明天早上我会试试这个(我住的地方已经很晚了),如果它有效的话,我会投票支持它。另一件小事:为什么必须同时使用preventdefault()和returnfalse?