1

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

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

执行上述代码后是否可以恢复默认上下文菜单?如果答案是肯定的,那么如何或如何正确地做到这一点?

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

4

3 回答 3

1
var oldHandlerToKeep = element.oncontextmenu
于 2013-11-06T22:35:32.097 回答
1

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

document.querySelector('div').oncontextmenu = _=>false;

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

于 2020-12-01T23:21:28.450 回答
-1

这是一个替代解决方案(基于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()如果之前调用过,这有助于恢复上下文菜单。希望它可以帮助一些路人。

于 2021-06-09T02:07:54.330 回答