0

我有一个非常简单的数据捕获网络应用程序。

在主捕获窗口中,当您在 UltraWebGrid 中保存一行时,根据某些标志,会打开另外两个窗口(使用 ScriptManager.RegisterStartupScript)。

其中一扇窗户,工作得很好。

另一个,当它关闭时(通过它自己的 ScriptManager.RegisterStartupScript)会在主窗口中导致 Firefox 中的下一个错误:

Sys 未定义 Sys$CultureInfo$_getAbbrMonthIndex("")ScriptRe...=7c12e347(第 6391 行)?在 ScriptResource.axd?d=Bx90cRohr9iY-lmxXmy5QYd7JgQApS0Xh-xBfl6hEe8d-0h4pCZYQQKgxdo97mKzaD5488jiBZ8TOSa4-cOPaw2&t=4e25e479@1()ScriptRe...=4e25e479(第 499 行)[中断此...更新时间错误]缩写月份名称);

在此之后,Firefox 变得疯狂,选项卡导航停止工作,窗口中的每个文本输入(包括地址栏和搜索框)都绘制它们的内容,就好像它们被选中一样(同时)并且事情停止了奇怪的。我必须关闭窗口并重新打开它,有时我什至不得不终止该进程。

我已经尝试了很多东西,但似乎没有任何效果。我比较了上述窗口中的两个 aspx 文件,并没有什么不同。

这让我快疯了。

以前有人遇到过这个错误吗?有任何想法吗?黑客?指针?

非常感谢你。

4

2 回答 2

1

简短的回答是,在浏览器中管理窗口(打开和关闭)并不是一项有趣或微不足道的任务。您必须确保在关闭窗口之前执行的所有脚本都已完成。在您的情况下,听起来在您关闭窗口时仍在运行初始化脚本。此时,DOM 被销毁,脚本开始尝试访问已被删除的元素。超时很容易破解。更好的解决方案是使用 WebDialogWindow(也在 NetAdvantage 中),它会弹出实际上是同一页面上的元素的“窗口”。这样您就可以管理它而不必依赖回发和脚本包含,并且您不必费力从单独的窗口中获取数据。

于 2009-06-05T17:14:22.827 回答
0

虽然我不知道确切原因,但该错误是由

ScriptManager.RegisterStartupScript(Page, Page.GetType(), "CLOSE", "window.close()");

另一个窗口有类似的事情,但它没有导致它。

我通过将 window.close() 包装在 setTimeout("window.close();", 500) 中来修复它。

我不知道为什么会发生这种情况,如果有人有线索请赐教。

干杯!

于 2009-06-05T05:54:53.713 回答