我已经开发了允许我通过另一个操作显示上下文菜单的 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 上下文菜单。你知道我该怎么做吗?