使用jQuery可以禁用除滚动条之外的所有单击操作



我正在尝试使页面完全不可识别(右键单击和左键单击),并在有人单击时显示消息。因为我知道这会引发很多问题,比如

"为什么会有人想这样做……这太愚蠢了……那么就没有人了。"可以浏览网站。。。而且它不能保护您的内容无论如何etc"

这是对我的目的的解释。我有一个页面,目前只是一个完成的网站最终会是什么样子的图形模型。无论我解释了多少次,这个模型只是一个图像,而不是一个真正的可导航网站,他们仍然给我发电子邮件说他们不能点击菜单和链接。由于这是一个单页模型,我想弹出一条alert()消息(不能使用模态,因为如果禁用了单击,则无法单击以将其忽略),让他们知道他们单击了一些不起作用的东西。我正试图在尽可能少的代码行中做到这一点,目前正在进行以下工作:

<script>
$('html').mousedown(function(event) {
    event.preventDefault();//To prevent following the link
    alert('Demo Graphic Only...clicking on stuff will NOT work at this point.');
});
</script>

问题是,当使用.mousedown时,我捕捉到用户试图点击浏览器滚动条向下滚动。我对此感到惊讶,因为它不是实际页面内容的一部分,而是浏览器的一部分。。。但它仍在抓住它。我试着用.click代替.mousedown,但在这种情况下,似乎只能捕捉到正常的(左)点击。。。有人知道如何轻松地(如果可能的话,代码行数最少)捕获左键和右键单击事件,但允许用户与浏览器滚动条进行交互吗?

试试这个:

 $(document).click(function(event) {
    event.preventDefault();//To prevent following the link
    console.log('Demo Graphic Only...clicking on stuff will NOT work at this point.');      
    });

单击页面而不是滚动条时,将调用此函数

尝试使用

event.stopPropagation();

event.stopImmediatePropagation()

对于遇到这个问题的人来说,另一种方法很好,尤其是当你需要特别预防mousedown时:

将滚动内容放在包装器元素中,并仅在内部元素上阻止mousedown。将包装器元素设置为overflow: auto; height: 100%;

最新更新