0

我在表单上使用 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

4 回答 4

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

于 2009-02-12T20:38:14.587 回答
0

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

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

2)找出哪些函数会触发破坏你生活的事件,在你的代码中覆盖这些函数并添加一个标志,以防止它们做坏事

3)最后,至少读一下: http ://www.quirksmode.org/js/events_order.html 那里可能对你有用

于 2009-02-12T20:10:44.670 回答
0

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

于 2009-02-12T20:11:15.447 回答
0

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

break;

后:

convChartWindow.focus();
于 2009-02-12T20:18:18.253 回答