2012-07-18 13 views
0

第一次張貼海報,但始終使用本網站作爲示例。我的小問題是這個(我已經研究過它,但找不到解決我的問題的方法)...右鍵菜單在菜單上返回false後錯誤地顯示上下文菜單

我有一個包含50多個姓名的文本列表,每天有一個項目,一個50 + x7的矩陣),我希望能夠右鍵點擊每日文本(每天一個div),並且每天顯示與該項目特別相關的菜單。然而,這不是什麼大問題,因爲我需要分別識別每個項目,並通過JS使用DivID來調用另一個函數,這變得非常重要。我查看了其他jquery菜單選項,但無法弄清楚如何正確地動態檢索名稱。

我遇到的問題不是創建菜單並捕獲項目ID,而是停止在右鍵單擊後出現ContextMenu。

我希望頁面在其他位置有右鍵單擊菜單,但不在這些DIV元素上,這是我創建的菜單。

下面的代碼已經被簡化...

這是我用JS:

function go(e,idname) 
    { 
    var rightclick; 
    e = e || window.event; 
    if (e.which) rightclick = (e.which == 3); 
    else if (e.button) rightclick = (e.button == 2);  
    var a = idname.id; 
    a = (a.substring(11)); 

    ShowContent('ToggleValueFloat'); // Display the DIV  

    $(document).ready(function() 
     { 
      $('#ToggleValueFloat').html('MY MENU TEXT' + <a href="Javascript:ToggleDay(' + a + ');">EXAMPLE</a>);   
      return false; 
     }); 

    return false; 
    } 


function ShowContent(d) { 
    if(d.length < 1) { return; } 
    var dd = document.getElementById(d); 
    AssignPosition(dd); 
    dd.style.display = "block"; 
} 

這是我使用的例如PHP:

echo '<a id="togglePopup' . (int)$arrayEId[$allEntries] . '" onmousedown="go(event,this); return false;">example</a>'; 

這是我用來展示的DIV。

<div id="ToggleValueFloat" style="display:none; position:absolute; border-style: solid; background-color: white; padding: 5px;"></div> 

我試圖讓它每次都返回false,所以上下文菜單不會顯示,但它不起作用。我可以在頁面上完全禁用右鍵單擊,但這會比以往更加沒有生產力。

任何想法/幫助將是偉大的!我願意選擇。謝謝你,史蒂夫

+0

如果沒有正確的縮進,你的代碼很難閱讀。 – jfriend00 2012-07-18 05:10:58

+0

對不起,我在SOF的代碼標籤上苦苦掙扎。 – 2012-07-18 05:13:07

+0

您只需將每行縮進四個空格,然後它將保留您的其他縮進並將其顯示爲代碼。編輯器中的「{}」工具會將塊四個空格縮進來顯示爲代碼。 – jfriend00 2012-07-18 05:16:18

回答

0

對於初學者來說,這是一個問題:

if (!e) var e = window.event; 

它,因爲所有的變量聲明懸掛是一樣的:

var e; 
if (!e) e = window.event; 

你有一個說法叫e和現在你正在創建一個同名的局部變量來覆蓋它。此時應更換該行與這只是重新分配參數e如果它未定義:

e = e || window.event; 

至於您的定位問題,你爲什麼不只是看在事件的對象鼠標是針對圖(在顯示菜單之前),如果目標對象是您想要顯示菜單的目標對象,然後只調用顯示菜單的代碼(如果點擊了所需目標)。

+0

感謝您的快速提示。我已經修改了我的代碼。:)但是,用我的菜單它創建的很好,但通常的右鍵點擊瀏覽器菜單顯示在我製作的菜單上,它不應該,因爲我已經告訴它「返回false」......?瀏覽器菜單根本不應該顯示。 – 2012-07-18 05:29:12

+0

啊,你沒有說你的問題是標準的瀏覽器右鍵菜單(或者我不明白)。某些瀏覽器不允許您控制右鍵單擊菜單,有些瀏覽器還有一個首選項設置,以確定是否允許網頁擊敗右鍵單擊菜單。默認情況下,我認爲Chrome和Firefox的最新版本不會讓網頁擊敗標準的右鍵菜單。即使谷歌地圖也有這個問題。 – jfriend00 2012-07-18 05:35:19

+0

嗯。奇怪的是我可以把這個..... 「警報('Rightclick:'+ rightclick);」.....剛剛從..... 「http:// www .quirksmode.org/js/events_properties.html「..... 和我沒有得到瀏覽器菜單...怪異。我正在使用最新的FF。 – 2012-07-18 05:45:50

相關問題