如何在所有浏览器中生成右键单击事件
-
21-09-2019 - |
题
一点上下文:
我正在使用的应用程序具有右键单击屏幕上某些对象的上下文菜单。当前的设计作为这些对象中的每个对象都会敲击右键,发送AJAX请求以获取该对象的上下文数据,使用该数据从Dojo 0.4.3(我知道!)创建popupmenu2,然后生成右键单击以启动Dojo菜单。
我正在尝试找出一种为所有浏览器生成右键事件的方法。当前,我们仅支持IE并使用OnContextMenu事件。
限制:
- 没有jQuery :(
- 我无法预订屏幕上对象的所有数据以创建Dojo菜单并避免AJAX请求。
解决方案
这应该使您开始生成右键单击事件。右键单击的键是按钮参数:按钮= 2。
if (document.createEvent) {
var rightClick = document.createEvent('MouseEvents');
rightClick.initMouseEvent(
'click', // type
true, // canBubble
true, // cancelable
window, // view - set to the window object
1, // detail - # of mouse clicks
10, // screenX - the page X coordinate
10, // screenY - the page Y coordinate
10, // clientX - the window X coordinate
10, // clientY - the window Y coordinate
false, // ctrlKey
false, // altKey
false, // shiftKey
false, // metaKey
2, // button - 1 = left, 2 = right
null // relatedTarget
);
document.dispatchEvent(rightClick);
} else if (document.createEventObject) { // for IE
var rightClick = document.createEventObject();
rightClick.type = 'click';
rightClick.cancelBubble = true;
rightClick.detail = 1;
rightClick.screenX = 10;
rightClick.screenY = 10;
rightClick.clientX = 10;
rightClick.clientY = 10;
rightClick.ctrlKey = false;
rightClick.altKey = false;
rightClick.shiftKey = false;
rightClick.metaKey = false;
rightClick.button = 2;
document.fireEvent('onclick', rightClick);
}
我建议使用“ document.createevent”和“ document.createeventobject”的Googleing,以了解Mozilla和MSDN网站的API。
希望这可以帮助!
不隶属于 StackOverflow