【发布时间】:2012-03-29 00:25:35
【问题描述】:
我有一个附加到名为“navigate.js”的网页的 JavaScript 文件,它包含一组如下所示的方法:
var ContractWindow;
function showContract(ContractID){
try{
if(ContractWindow){
if(!ContractWindow.closed){
ContractWindow.close;
}
}
ContractWindow = window.open(contract.aspx?contractid=" + ContractID, "ContractEditor",
"toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=1,width=780,height=615");
}
}catch(exc){
alert(exc.message);
}
}
(有类似的功能可以打开页面编辑产品类别、产品、地区...等)
几个函数中的每一个都在自己的窗口中打开一个不同的编辑器页面,目标是在任何给定类型(其中 type="ContractEditor")中只打开一个窗口时间。
如果重用编辑器(在本例中为合同编辑器),我们希望首先关闭前一个窗口,以便后续的window.open 将导致新窗口出现在任何窗口的前面(具有焦点)。
一切都按预期工作,直到页面空闲大约 10 分钟。之后警报消息显示:调用的对象已与其客户端断开连接
各种测试表明该异常来自于将 window.open 的返回值赋值给 ContractWindow 变量。如果我忽略ContractWindow = 而只是调用window.open,它可以工作,但窗口不会“弹出”到最前面,这是一个要求。 (window.open 重用名为“ContractEditor”的现有窗口,但不会将其从打开的窗口堆栈中移出。)
【问题讨论】:
-
您在运行 Microsoft VBA 代码吗?
-
没有。服务器上的 Asp.net/C#,客户端上带有 javascript(和一些 jquery)。浏览器是 IE 7/8