1

我已经开发了允许我通过另一个操作显示上下文菜单的 js 代码。例如,通过左键单击或按键。除了 gmail 或 hotmail 中的邮件之外,我设法为大多数元素做我想做的事情。例如,当您右键单击时,会出现一个带有“存档”或“标记为未读”的小菜单。这不是出现的经典菜单。我想做的是强制在这些上显示经典菜单。这是我到目前为止生成上下文菜单事件的代码:

window.document.addEventListener("click", associate, false);
window.document.addEventListener("mousedown", associate, false);
window.document.addEventListener("mouseup", associate, false);

var associate = function(event)
{
    var element = event.srcElement||event.target;
    element.addEventListener("click", context, true);
    element.addEventListener("mousedown", context, true);
    element.addEventListener("mouseup", context, true);
};

var context = function(event)
{
    if(event.button == 0)
    {
        var element = event.srcElement||event.target;
        menu(element, event);
        event.stopPropagation();
        event.preventDefault();
    }
};

var menu = function(element, event)
{
    var evt = element.ownerDocument.createEvent('MouseEvents');
    evt.initMouseEvent('contextmenu', true, true, element.ownerDocument.defaultView, 1, event.screenX, event.screenY, event.clientX, event.clientY, false, false, false, false, 2, null);
    element.dispatchEvent(evt);
}; 

这样,例如,在 gmail 中的电子邮件中,当我左键单击时,我仍然有特殊的 gmail 上下文菜单。你知道我该怎么做吗?

4

0 回答 0