更新2012-01-10
弹出URL在另一个域中作为父窗口,这似乎是问题!我该如何解决?
我正在使用以下代码来检测弹出窗口是否已关闭。它在Firefox 8和Chrome中运行良好,但在IE9中无法正常运行。在IE9中,当弹出窗口仍处于打开状态时,已显示“true”的警报。当窗口仍处于打开状态时,IE9如何引用窗口和closed
属性报告true
?我该如何解决?
的Javascript
var dialogWindow;
var dialogTimer;
function openDialog(url, name, options) {
dialogWindow = window.open(url, name, options);
dialogTimer = setInterval(function() {
if(dialogWindow.closed) // IE9 reports true and executes function
{
alert(dialogWindow.closed); // alert with "true"
clearInterval(dialogTimer);
window.location.reload();
}
}, 2500);
if (dialogWindow && dialogWindow.focus)
dialogWindow.focus();
}
更新 我还尝试了以下方法,它在IE9中显示了完全相同的行为
var dialogWindow;
var dialogTimer;
function openDialog(url, name, options)
{
dialogWindow = window.open(url, name, options);
dialogTimer = setInterval("checkDialogOpen()", 2500);
if (dialogWindow && dialogWindow.focus)
dialogWindow.focus();
}
function checkDialogOpen()
{
if(dialogWindow.closed)
{
alert(dialogWindow.closed);
clearInterval(dialogTimer);
window.location.reload();
}
}
答案 0 :(得分:1)
您的脚本存在问题 变化:
dialogTimer = setInterval(function()
{
if(dialogWindow.closed) // IE9 reports true and executes function
{
到
dialogTimer = setInterval(function()
{
var dialogClosedStatus = dialogWindow.closed;
if(dialogClosedStatus) // IE9 reports true and executes function
{
编辑:我的打字是虚假的:修复
测试页:http://jsfiddle.net/MarkSchultheiss/k2jHS/
特别说明:由于我的测试页面示例中的窗口重新加载,弹出窗口将继续出现。
注意:如果不能解决问题,请尝试将变量设置为null,如下例所示: http://jsfiddle.net/MarkSchultheiss/k2jHS/2/
答案 1 :(得分:1)
据我所知,这是IE9中的一个错误。