可以恢复上下文菜单



我正在阻止上下文菜单,然后我想将其恢复到以前的状态。

myElement = document.querySelector('*');
myElement.addEventListener('contextmenu', MyContextMenu);
执行

上述代码后可以恢复默认上下文菜单吗?如果答案是肯定的,那么如何或如何正确制作?

我想要的是阻止上下文菜单,然后在一段时间后恢复它。

将所有上下文菜单重新分配为默认值:

document.querySelector('div').oncontextmenu = _=>false;
var d = document.createElement('div').oncontextmenu;
[...document.querySelectorAll("*")].forEach(e => e.oncontextmenu = d);
<div>sample</div>

var oldHandlerToKeep = element.oncontextmenu

这是一个替代解决方案(基于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())。希望它可以帮助一些路人。

最新更新