4

ちょっとしたコンテキスト:
私が取り組んでいるアプリには、画面上の特定のオブジェクトの右クリック コンテキスト メニューがあります。現在の設計では、これらのオブジェクトのそれぞれが右クリックをリッスンし、AJAX 要求を送信してそのオブジェクトのコンテキスト データを取得し、そのデータを使用して Dojo 0.4.3 から PopupMenu2 を作成し (わかっています!)、次に生成します。右クリックして Dojo メニューを起動します。

すべてのブラウザで右クリック イベントを生成する方法を見つけようとしています。現在、IE のみをサポートしており、oncontextmenu イベントを使用しています。

制限:

  • jQueryなし:(
  • 画面上のオブジェクトのすべてのデータをプリロードして Dojo メニューを作成し、AJAX 要求を回避することはできません。
4

1 に答える 1

4

これで、右クリックイベントの生成を開始できます。右クリックの鍵はボタンパラメータです: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);
}

MozillaおよびMSDNサイトからのAPIの詳細については、「document.createEvent」および「document.createEventObject」をGoogleで検索することをお勧めします。

お役に立てれば!

于 2009-10-16T21:56:42.647 に答える