我正在阻止上下文菜单,然后我想将其恢复到以前的状态。
myElement = document.querySelector('*');
myElement.addEventListener('contextmenu', MyContextMenu);
执行上述代码后,可以恢复默认上下文菜单吗? 如果答案是肯定的,那么如何或如何正确地做出来?
我想要的是阻止上下文菜单,然后在一段时间后恢复它。
答案 0 :(得分:1)
var oldHandlerToKeep = element.oncontextmenu
答案 1 :(得分:0)
将所有上下文菜单重新分配为默认菜单:
document.querySelector('div').oncontextmenu = _=>false;
var d = document.createElement('div').oncontextmenu;
[...document.querySelectorAll("*")].forEach(e => e.oncontextmenu = d);
<div>sample</div>
答案 2 :(得分:-1)
这是一个替代解决方案(基于 this post 的 Chema):
document.body.oncontextmenu = null;
document.addEventListener("contextmenu",
function (event) {
event.returnValue = true;
if (typeof(event.stopPropagation) === 'function')
{
event.stopPropagation();
}
if (typeof(event.cancelBubble) === 'function')
{
event.cancelBubble();
}
}, true);
如果之前调用了 preventDefault()
,这有助于恢复上下文菜单。希望能帮到一些路人。