如何阻止执行进一步的JavaScript事件

时间:2009-02-12 20:02:34

标签: asp.net javascript javascript-events infragistics

我在表单上使用Infragistics网格并处理单元格上的多个客户端事件(例如,单元格单击,单元格编辑之前,单元格更新之前等)。

在单元格点击事件中,我按如下方式(成功地)生成了一个辅助窗口:

 var convChartWindow = window.open("conversioncharts/" + currentCell.getValue() + ".html", "chart", "location=0,0, status=1, scrollbars=1, width=" + screen.width + ", height=175");        
 convChartWindow.focus();

但是,'convChartWindow'不会保持焦点,并且会被父窗口覆盖。在此之后,我的其他单元格事件都没有发生,但似乎有一些Infragistics JavaScript运行。

我可以在上面的.focus()之后添加一些东西以防止进一步的javascript运行并将焦点保持在正确的窗口上吗?

谢谢!

4 个答案:

答案 0 :(得分:4)

请致电:

// Prevents event bubble up or any usage after this is called.
// pE - event object
function StopEvent(pE)
{
   if (!pE)
     if (window.event)
       pE = window.event;
     else
       return;
  if (pE.cancelBubble != null)
     pE.cancelBubble = true;
  if (pE.stopPropagation)
     pE.stopPropagation();
  if (pE.preventDefault)
     pE.preventDefault();
  if (window.event)
     pE.returnValue = false;
  if (pE.cancel != null)
     pE.cancel = true;
}  // StopEvent

这是从这里剪下来的:What is equivalent of 'event.returnValue=false' in Firefox

由Peter Blum撰写 请参阅:PeterBlum.com

答案 1 :(得分:0)

我不知道什么是infragistics。我假设它有一些你无法控制的框架。如果我是你,我会尝试以下方法:

1)设置超时以在1000毫秒后将焦点恢复到窗口,或设置超时循环以将焦点设置到所需的窗口。这是一个黑客。

2)弄清楚哪些函数会触发破坏你生活的事件,覆盖你代码中的那些函数,并添加一个标志来防止他们做出恶意的事情

3)最后,至少读到这个: http://www.quirksmode.org/js/events_order.html 那里可能有一些对你有用的东西

答案 2 :(得分:0)

让子窗口在打开时调用焦点。

答案 3 :(得分:0)

如果函数中还有其他内容运行您提供的代码,请尝试使用:

break;

后:

convChartWindow.focus();