3

小上下文:
我正在使用的應用程序有一個右鍵單擊上下文菜單,用於屏幕上的某些對象。當前的設計是每個這樣的對象偵聽右鍵單擊,發送一個AJAX請求以獲取該對象的上下文數據,使用該數據從Dojo 0.4.3創建一個PopupMenu2(我知道!),然後生成右鍵單擊以啓動Dojo菜單。如何在所有瀏覽器中生成右鍵單擊事件

我想弄清楚一種方法來爲所有瀏覽器生成一個右鍵單擊事件。目前,我們只支持IE並使用oncontextmenu事件。

限制:

  • 沒有的jQuery :(
  • 我不能預加載的屏幕上的對象來創建道場菜單,避免AJAX請求中的所有數據
+2

http://www.harelmalka.com/rightcontext/ – powtac 2009-10-16 18:21:54

+1

+1用於啓動一個關於右鍵單擊事件的問題,使用「一點點上下文」。 – Troubadour 2009-10-16 18:27:14

+0

我很高興有人抓到了! – ntownsend 2009-10-16 18:28:39

回答

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); 
} 

對於'document.createEvent'和'document.createEventObject',我會建議Googleing以獲取來自Mozilla和MSDN網站的API的更多詳細信息。

希望這會有所幫助!

+0

是否應該在10,10處彈出本地瀏覽器上下文菜單?它不適合我! – EoghanM 2014-01-07 15:19:16

+1

不適用於鍍鉻。 – 2014-07-11 04:31:21

相關問題