如何使用Prototype禁用Mozilla中某些元素的默认上下文菜单?

3
我正在尝试扩展特定元素(特别是h1h2标签)上上下文菜单的导航选项,我想在右键单击这些元素时阻止浏览器的默认操作。 我在此页面找到了有用的信息。
然而,我没有找到如何禁用特定元素的上下文菜单。是否有人知道如何实现?
我使用原型作为我的javascript API。
2个回答

4
这将防止特定元素上出现上下文菜单。
$(it).observe("contextmenu", function(e){
    e.stop();
});

因此,例如停止所有H1/H2标签显示上下文菜单。
$$('h1, h2').each(function(it){
    $(it).observe("contextmenu", function(e){
        e.stop();
    });
})

-1
你可以对它进行混淆,但最终你的页面只是浏览器中的一个客人(如果你愿意,你可以把它理解为犯人是“国家”的“客人”)。因此,网页必须依赖于浏览器来友好地运行。如果用户想要运行不友好的浏览器或自定义其现有浏览器以这样做,那总是他们的选择。你永远不能强制浏览器做任何事情。一旦用户在本地机器上查看页面,如果他们真的想要执行某个活动,你无法阻止他们。更重要的是,大多数最新的浏览器已经内置了工具,使得当出现异常情况时,用户很容易覆盖正常的行为。

我不知道这与原问题有什么关系? - James Hughes
他想在浏览器中禁用上下文菜单。沿着那条路走只会导致疯狂。 - Joel Coehoorn
1
不过,对于基于Javascript的交互,99.9%的情况都是一样的。这并没有什么不同。Web/Javascript开发应该始终考虑到边缘情况,但你不能因为潜在漏洞而选择不去做。那是很消极的态度 :-P - James Hughes
我更担心他们正在使用这个来“保护”某种内容,如果是这样的话,他们会发现他们彻底失败了。 - Joel Coehoorn
引用 Joel Coehoorn 的话,“你永远不能强制浏览器做任何事情”,我承认“你永远不能强制浏览器使用 JavaScript”。有了这个想法,我们可以放弃 JavaScript,因为当 Joel 是正确的时候,使用它是疯狂的。 - user1023386
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接