我正在使用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。这很奇怪,因为我没有关上窗户。
答案 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();
}
函数。