Firefox和IE9中的Javascript事件
Javascript events in Firefox and IE9
我在ASP.NET应用程序中附加到单元格oncontextmenu
函数CCD_ 2。
在我的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上运行正常,但在Firefox window.event.returnValue = false;
上则不执行。我在谷歌上搜索了一下Firefox是如何处理这个返回值的,我发现我应该在window.event的死后调用e.preventDefault();
。问题是在我的函数中e
是未定义的。
你能帮我找到一个既适用于FF又适用于IE的解决方案吗?
感谢
您可以重构代码以使用jQuery,它适用于所有浏览器,例如:
$('body').bind('contextmenu', function(e) {
//Stop browser from opening context menu
e.preventDefault();
//Do more stuff
});
我找到了出路。
我用这种方式声明了一个函数:
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;
并在ASPxClientUtils.PreventEventAndBubble(currentEvent);
等其他函数调用中使用currentEvent
干杯
相关文章:
- 如何将javascript事件从web浏览器wpf控件发送到wpf的c#代码
- 在同一个javascript事件处理程序中调用不同的函数
- Javascript事件;在新选项卡中打开”;
- 存在每个时间元素的javascript事件
- Javascript事件.锚的目标问题
- 带有参数的Javascript事件处理程序
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- firefox中的Javascript事件范围问题
- Firefox中的JavaScript事件参数
- 在动态加载的PHP表单上放置JavaScript事件
- 如何在Javascript事件上从JSNI设置GWTClass字段
- Javascript事件发射器一次处理多个事件
- 在下拉式javascript事件监听器中选择时触发事件
- 在javascript中导入xlsx文件时,如何手动强制javascript事件
- 显示触发的JavaScript事件
- 正在取消IE11中的JavaScript事件
- 页面卸载期间的JavaScript事件循环
- 存在其他参数时访问Javascript事件
- 阻止Javascript事件影响子元素
- 如何在事件处理程序中获取 javascript 事件对象