2012-04-04 41 views
2

我將ASP.NET應用程序附加到單元格oncontextmenu 函數string.Format("OnCellContextMenu({0}, '{1}', true, true)", e.VisibleIndex, e.DataColumn.FieldName)Firefox和IE9中的Javascript事件

在我的JS我定義以下功能。

function OnCellContextMenu(visibleIndex, fieldName, hasNote, hasValue) { 
    currentVisibleIndex = visibleIndex; 
    currentFieldName = fieldName; 

    if (fieldName == "Name" || fieldName == "TOTAL") { 
     EnableMenuItem('AddNote', false); 
     EnableMenuItem('EditNote', false); 
     EnableMenuItem('RemoveNote', false); 
    } 
    else { 
     EnableMenuItem('AddNote', !hasNote && hasValue); 
     EnableMenuItem('EditNote', hasNote); 
     EnableMenuItem('RemoveNote', hasNote); 
    } 

    window.event.returnValue = false; 

    gvPrevisions.SetFocusedRowIndex(visibleIndex); 
    GridMenu.ShowAtPos(ASPxClientUtils.GetEventX(event), ASPxClientUtils.GetEventY(event)); 
} 

現在,IE工程properlly,但在Firefox window.event.returnValue = false; 不執行它。我搜索了一下,看看Firefox如何處理這個返回值,我得到了我應該調用e.preventDefault(); insadad window.event。問題是在我的功能e是未定義的。

你能幫我找到一個適用於FF和IE的解決方案嗎?

感謝

+0

你期望發生什麼? – Jivings 2012-04-04 12:36:38

+0

防止瀏覽器菜單右鍵單擊並顯示我自己的。 – MaiOM 2012-04-04 12:39:36

+0

使用此。 if(window.event.preventDefault){window.event.preventDefault(); } – Ramesh 2012-04-04 12:42:14

回答

0

我發現我的出路。

我宣佈這樣一個功能:

function OnCellContextMenu(e, visibleIndex, fieldName, hasNote, hasValue) 

,並在這樣的聯想:

e.Cell.Attributes.Add("oncontextmenu", string.Format("OnCellContextMenu(event, {0}, '{1}', true, true)", e.VisibleIndex, e.DataColumn.FieldName)); 

然後在功能我得到了var currentEvent = (window.event) ? window.event : e; 和在其他功能使用currentEvent調用像ASPxClientUtils.PreventEventAndBubble(currentEvent);

乾杯

1

您可以重構代碼使用jQuery,這在所有瀏覽器E.g工作:

$('body').bind('contextmenu', function(e) { 
    //Stop browser from opening context menu 
    e.preventDefault(); 
    //Do more stuff 
}); 
+0

這將是很好,但我使用Devxpress GridView,並以特定方式將oncontextmenu屬性設置爲網格單元格。內部網格HtmlDataCellPrepared服務器端事件我在做以下事情:e.Cell.Attributes.Add(「oncontextmenu」,string.Format(「OnCellContextMenu({0},'{1}',true,true)」,e。 VisibleIndex,e.DataColumn.FieldName)); – MaiOM 2012-04-04 13:01:58