我已经开发了js代码,允许我通过另一个动作显示上下文菜单。例如,通过左键单击或按键。 我设法做了我想要的大多数元素,除了一些像gmail或hotmail中的邮件。右键单击时,会出现一个带有“存档”或“标记为未读”的小菜单。这不是出现的经典菜单。 我想做的是强制显示这些经典菜单。 这是我到目前为止生成contextmenu事件的代码:
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上下文菜单。 你知道我怎么办吗?