防止使用Javascript点击链接

防止使用Javascript点击链接,javascript,html,tags,navigation,anchor,Javascript,Html,Tags,Navigation,Anchor,它几乎在任何地方都成功地禁用了链接,但对该站点上主题标记的工具提示弹出窗口中的链接无效。我查看了DOM,它们确实是标记 为什么 有没有更有效的方法强迫我的用户停留在当前页面上?这是一个bookmarklet,我在其中以图形方式操纵DOM,因此我需要能够单击和拖动所有内容,包括链接 我知道,即使我可以禁用所有锚点上的常规单击功能,它也不会对由其他标记上的其他单击回调触发的任何导航做任何事情 看来解决方案是 $('a').click(function(e){return false;}); 正确使

它几乎在任何地方都成功地禁用了链接,但对该站点上主题标记的工具提示弹出窗口中的链接无效。我查看了DOM,它们确实是标记

为什么

有没有更有效的方法强迫我的用户停留在当前页面上?这是一个bookmarklet,我在其中以图形方式操纵DOM,因此我需要能够单击和拖动所有内容,包括链接


我知道,即使我可以禁用所有锚点上的常规单击功能,它也不会对由其他标记上的其他单击回调触发的任何导航做任何事情

看来解决方案是

$('a').click(function(e){return false;});
正确使用事件系统,如果我自己这么说的话


这个问题最初的范围不够广泛。这解决了导致我的问题的问题

看来解决方案是

$('a').click(function(e){return false;});
正确使用事件系统,如果我自己这么说的话


这个问题最初的范围不够广泛。这解决了导致我的问题的问题

尝试使用.on-in,例如,稍后创建这些链接,然后再附加活动

window.onbeforeunload = function() {
  return "Are you sure you want to navigate away?";
}

尝试使用.on-in,例如,使这些链接稍后创建,然后再附加事件

window.onbeforeunload = function() {
  return "Are you sure you want to navigate away?";
}

我以前使用的一种技术是在整个文档上放置一个不可见的绝对定位元素。这实际上是Firebug Lite使用的,允许元素检查器拦截任何点击

然后,您需要担心的是将事件侦听器连接到绝对定位的元素,并确定单击时鼠标下的元素是什么。幸运的是,所有现代浏览器都实现了一种方法来区分这一点:document.elementFromPoint。实现之间存在一些差异;以下是我通常使用的方法不幸的是,特征检测对此有点棘手,因此我正在进行浏览器检测:

$(document).on('click', 'a', function(e) {
 return false;
});

我以前使用的一种技术是在整个文档上放置一个不可见的绝对定位元素。这实际上是Firebug Lite使用的,允许元素检查器拦截任何点击

然后,您需要担心的是将事件侦听器连接到绝对定位的元素,并确定单击时鼠标下的元素是什么。幸运的是,所有现代浏览器都实现了一种方法来区分这一点:document.elementFromPoint。实现之间存在一些差异;以下是我通常使用的方法不幸的是,特征检测对此有点棘手,因此我正在进行浏览器检测:

$(document).on('click', 'a', function(e) {
 return false;
});


我不是说你在滥用这个,我只是把这个放在这里供其他人参考:@Derek这不就是让某些链接看不见,因为它们现在会被更多的东西覆盖吗?我不想这么做。我不是说你滥用了这个,我只是把它放在这里供其他人参考:@Derek这不就是让某些链接不可见,因为它们现在会被更多的东西覆盖吗?然而,我不想那样做。我认为您的答案可能是错误的,因为回调将在文档上运行,而不是在单个锚元素上运行。我只是尝试了一下,效果很好。请参阅参考资料-具体地说,第二个参数叫做“选择器”,哦,我明白了。只要跟随传播的链接在路径的某个地方被阻塞,它就应该做到这一点。一个更好的等效解决方案$文件。单击“a”时,为假;然而我认为您的答案可能是错误的,因为回调将在文档上运行,而不是在单个锚元素上运行。我只是尝试了一下,效果很好。请参阅参考资料-具体地说,第二个参数叫做“选择器”,哦,我明白了。只要跟随传播的链接在路径的某个地方被阻塞,它就应该做到这一点。一个更好的等效解决方案$文件。单击“a”时,为假;这是一个过分的解决方案:我认为这可能是合适的,因为您要求一个健壮的解决方案。仅考虑锚定将无法防止在附加了单击处理程序的其他元素上单击。这是唯一100%确定的拦截所有点击的方法。是的,也许吧。在我的情况下,onbeforeunload钩子更合适,因为它将阻止我最初想要避免的一件事,这让我问起如何防止点击。我想知道$document.on'click'、'*'函数{return false;}在防止点击方面是否同样健壮。这是一个过分的解决方案:我认为它可能适合这里,因为您要求一个健壮的解决方案。仅考虑锚定将无法防止在附加了单击处理程序的其他元素上单击。这是唯一100%确定的拦截所有点击的方法。是的,也许吧。在我的情况下,onbeforeunload钩子更合适,因为它将阻止我最初想要避免的一件事,这让我问起如何防止点击。我想知道$document.on'click','*',func 选项{return false;}在防止点击方面同样强大。