Javascript SetInterval在IE中不起作用

时间:2015-10-21 21:38:44

标签: javascript internet-explorer

我正在使用window.open打开一个弹出窗口和setinterval函数来等待并刷新后台页面,一旦关闭弹出窗口。 该代码在Chrome和Firefox中运行良好,但在IE中无效。

基本上问题是:在IE中,它不会等到弹出窗口关闭。弹出窗口打开后立即刷新。 我在IE 9& S中看到了这个问题。 IE 11。

对此有何解决方案?

这是代码:

var url = "/apex/VFP_Add";
var win = window.open(url, "Add" ,"width=600, height=300, scrollbars=yes"); 
win.moveTo(500, 100); 
win.focus(); 
var timer = setInterval(function() { 
if(win.closed) { 
clearInterval(timer); 
window.location.reload(); 
} 
}, 500);

如果(win.closed)检查并且在检查之后,我就提前发出警报。对于第一个警报,它显示为False。在第二个警报中,在“if check”之后,它显示为True。这很奇怪,因为我没有关上窗户。

1 个答案:

答案 0 :(得分:1)

似乎这是IE中的一个已知错误。请参阅此文章:https://support.microsoft.com/en-us/kb/241109

当你检测到它在IE中运行时,他们的解决方案是基本上否定trait MyTrait { fn sum(&self, val: i64) -> i64; } #[derive(Debug)] struct X { x: i64, } impl MyTrait for X { fn sum(&self, val: i64) -> i64 { self.x + 2 * val } } #[derive(Debug)] struct Y { x: i64, } impl MyTrait for Y { fn sum(&self, val: i64) -> i64 { self.x + 3 * val } } fn from_name(name: &str) -> MyTrait { match name { "X" => X, "Y" => Y, _ => panic!("Unknown name") } } fn main() { let x = X{x: 21}; let y = Y{x: 42}; // This does not work, it is just to show the idea let z = from_name("X"){x: 10}; println!("x {:?}", x.sum(3)); println!("y {:?}", y.sum(3)); println!("z {:?}", z.sum(3)); } 的值。类似的东西:

win.closed

有多种方法可以检测IE,因此您可以使用自己喜欢的方法代替if(win.closed || isRunningInIE()) { clearInterval(timer); window.location.reload(); } 函数。