我一直在制作一个使用某种……外部调查的网页。我想知道在使用 window.open 方法时,您能否判断您的新窗口是否有 404 或页面超时尝试加载?
这是我目前所拥有的:
child = window.open(href, 'window');
setTimeout(function() {
// Do some backend processing if child window is still open and no 404 / timeout
}, 10000);
最佳答案
这是一件非常困难的事情。你必须处理安全问题(JS 禁止跨域访问)。但我认为这个函数可以解决问题:
child = window.open(href, 'window');
setTimeout(function() {
try {
var foo = child.location;
}
catch (err) {
// It has loaded. Manage that.
return;
}
// Still loading. Code here.
}
}, 10000);
解释:尝试访问子窗口的location
元素。如果窗口已加载,尝试访问它会抛出异常(禁止跨域 JS 访问),因此您可以管理它。但是,如果您可以访问该位置,则可能意味着它仍在加载。
主要问题是,使用这段代码,您只能区分它何时加载,所以我想您只能检查超时。我认为检查 404 错误几乎是不可能的,因为 JS 安全限制不允许您获取外部页面的位置或内容。
关于javascript - window.open .. 一种判断窗口是否超时或 404 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8631461/