是的,让我们先解决这个问题。是的,我想隐藏上下文菜单。不,我不是想阻止某人从我的页面上取消内容。它的用途是用于浏览器内游戏的输入,它将仅限于网页上的特定区域。
从意识形态转向技术......
var mouse_input = function (evt) {
// ...
return false;
}
document.onmousedown = mouse_input; // successful at preventing the menu.
document.addEventListener('mousedown', mouse_input, true); // unsuccessful
有人可以向我解释为什么addEventListener
版本无法停止上下文菜单的触发吗?我在 Safari 的 Web Inspector 中看到的唯一区别是document.onmousedown
的{{1}}值为isAttribute
,而addEventListener
1}}版本与false具有相同的值。
答案 0 :(得分:4)
所以我的无用搜索突然变得富有成效。
var mouse_input = function (evt) {
evt.preventDefault();
}
document.addEventListener('contextmenu', mouse_input, false);
适用于 Safari , Firefox , Opera 。 preventDefault()
阻止通常的行动发生。我不得不改变为了适应 Safari 而被监听的事件,无论如何它更合乎逻辑。更多信息:实现EventListener的函数不应返回值,因此return false
无效。
答案 1 :(得分:4)
解释差异.. element.onmousedown = somefunction;
是一个绝对的任务;您正在替换元素上的事件处理程序。顾名思义,element.addEventListener(...)
除了已为事件附加的任何处理程序外,还添加处理程序。