JavaScript& Opera中“window.open”返回的“closed”属性异常

时间:2012-02-25 11:36:00

标签: javascript opera popupwindow

在尝试获取弹出窗口的“关闭”属性时,我在Opera中遇到了类似bug的问题。

以下是我执行的操作。

>>> win = open('some url in the same domain with the parent window','name','feature')
Window 
>>> win.closed //at this point, the popup window is not closed
false
>>> win.closed //at this point, the pop window is closed
false //this should be true

第二个“假”应该是“真实的”,正如我所料。

我在Chrome和Firefox中运行它,没关系。

有任何线索吗?

PS: 我正在使用Opera 11.2,Linux

3 个答案:

答案 0 :(得分:1)

这在我的Opera版本中运行良好,至少在我放在一起的测试用例中here

我可以手动或使用按钮关闭窗口,closed属性显示正确的值。

我在linux上使用Opera版本11.61。


以下是测试用例的代码。

var popup = {};

function pop() {
    popup = window.open('foo', 'foo', "menubar=no,location=no,resizable=yes,scrollbars=yes,status=no,width=200,height=200" ); 
}    
function unpop() {
    popup.close();  
}
function check() {
    alert(({}).toString.call(popup) + ' closed: ' + popup.closed);
}

var b1 = document.body.appendChild(document.createElement('button'));
var b2 = document.body.appendChild(document.createElement('button'));
var b3 = document.body.appendChild(document.createElement('button'));

b1.textContent = 'open';
b2.textContent = 'close';
b3.textContent = 'check';

b1.onclick = pop;
b2.onclick = unpop;
b3.onclick = check;

答案 1 :(得分:1)

请升级Opera。有一个已知的错误在某些早期版本中破坏了正确的.closed报告,但它应该在最近的版本中修复。

答案 2 :(得分:0)

这似乎是Opera中的一个错误。我发现有人打开错误报告的资源: http://www.highdots.com/forums/javascript/closing-popup-window-new-opera-45642.html

请注意回复:

  

E Michael Brandt写道:

     

感谢您确认此信息以及提交错误报告。 snip这是一个已知的bug和一个回归,它应该很快修复,但我不能保证修复将是   在下一个次要版本中,我无法建议时间表。抱歉   关于造成的不便!