【发布时间】:2012-03-26 14:58:46
【问题描述】:
所以我使用 onbeforeunload 事件来关闭从我的父窗口打开的所有子窗口(图像)。我正在使用的代码很旧,父窗口为不同的操作做了很多回发,所以我在服务器端跟踪图像,并在需要时将 onbeforeunload 属性添加到正文。
当窗口要关闭时,服务器端代码编写一个脚本,该脚本简单地调用带有字符串参数的 Javascript 函数。 Javascript 工作正常,问题是它并不总是被击中。
我的服务器端代码如下所示:
private void CloseAllChildren()
{
// some code to retrieve image window names...
string script = "closeAllChildren('imagewindowname1,imagewindowname2,etc');";
_body.Attributes.Add("onbeforeunload", script);
}
以及触发关闭事件时调用的关闭方法:
private void Close()
{
// A bunch of code...
// close the window after all folders have been routed
CloseAllChildren();
this.Response.Write(FolderView.WindowClose);
}
我不知道计算机是随机的,但我的结果似乎没有遵循任何模式。有时它会命中 Javascript 并完美运行,有时它在相同的测试条件下永远不会命中 Javascript。我假设存在某种竞争条件,但我不确定如何检测或修复它。有没有人有这方面的经验或更好的方法?就像我说的,代码很旧,这是对功能的一个小补充,所以我不想更改任何当前框架。
提前致谢。
【问题讨论】:
-
您应该发布 JavaScript 端的事件处理程序的样子......哦等等;我猜你确实发布了那个。但是那个“closeAllChildren”函数呢?这是什么样的(JavaScript 版本,而不是创建对其调用的服务器端代码)。
-
Javascript 只是根据窗口名称关闭被告知的窗口,'function closeAllChildren(names) { if (names != "") { var opensWindows = names.split(',' ); while (openedWindows.length > 0) { var winName = opensWindows.pop(); var win = window.open(winName, winName);赢.close(); } } }' 这不是问题,如果这个方法被命中,它不会失败。我的问题在于它并不总是受到打击。
-
另外,我对在这里发帖还很陌生,我真的不知道如何在评论中添加代码块。
标签: c# javascript asp.net onbeforeunload