可以恢复上下文菜单

时间:2013-11-06 22:33:46

标签: javascript

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

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

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

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

3 个答案:

答案 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 postChema):

    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(),这有助于恢复上下文菜单。希望能帮到一些路人。