dojo 如何在所有浏览器中生成右键单击事件

njthzxwz  于 2022-12-16  发布在  Dojo
关注(0)|答案(1)|浏览(165)

一个小背景:

我正在开发的应用程序为屏幕上的某些对象提供了右键单击上下文菜单,当前的设计是,每个对象都侦听右键单击,发送 AJAX 请求以获取该对象的上下文数据,使用该数据从Dojo 0.4.3(我知道!)创建PopupMenu 2,然后生成右键单击以启动Dojo菜单。
我正在尝试找出一种方法来为所有浏览器生成一个右键点击事件。目前,我们只支持IE和使用oncontextmenu事件。

限制条件:

  • 没有jQuery:(
  • 我无法预先加载屏幕上对象的所有数据来创建Dojo菜单并避免 AJAX 请求。
aelbi1ox

aelbi1ox1#

这应该可以让你开始生成一个右键点击事件。右键点击的关键是button参数:按钮= 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”,以获得Mozilla和MSDN网站上关于API的更多细节。
希望这有帮助!

相关问题