Safari没有'当src不是有效的站点时,不要调用iframe-onload
Safari doesn't call iframe onload when src is not valid site
对于以下iframe,Safari从不调用onload函数,也不在iframe中显示任何内容。我测试过的所有其他浏览器都会调用onload并显示默认的错误网页。
<html>
<body>
<iframe src="http://www.asdkjhjhkjhkjhjhjhfhkjhsdflkjahdsjfhasf.com"
onload="alert('iframe loaded');">
</iframe>
</body>
</html>
为什么会发生这种情况?如果这个问题没有解决方案,那么我需要找到一种方法来检测iframe是否加载失败。
前几天我偶然发现了这篇文章,其中提供了一个解决Safari中丢失load event
的方法。这个帖子来自2011年,但似乎仍然有效。
编辑:以上链接似乎已不起作用。这是一个缓存的副本
为Safari提出的解决方案是在iframe
的document
上检查readyState
事件,如下所示:
<iframe id="ifra" src="http://www.asdkjhjhkjhkjhjhjhfhkjhsdflkjahdsjfhasf.com"
onload="alert('iframe loaded');">
</iframe>
<script>
var iframe = document.getElementById('ifra'),
doc = iframe.contentDocument || iframe.contentWindow;
if (doc.document) doc = doc.document;
var _timer = setInterval(function() {
if (doc.readyState == 'complete') {
clearInterval(_timer);
alert('iframe ready');
}
}, 1000);
</script>
根据Mozilla关于contentDocument的文档,当仅在Safari中运行此脚本时,您不需要在contentWindow
中包含变通方法,但我将其保留在此处,以防您想在浏览器之间使用它。
相关文章:
- 通过iframe登录到远程站点
- 在IFrame中对jsp的onload是将IFrame设置为整个页面/浏览器
- iFrame onload JavaScript event
- 如果iframe在src(pdf或text)中有非html文档,则iframe中的onload不起作用
- 在iframe中禁用onload函数的Javascript
- 允许 My(!) 站点与 Iframe 通信
- 在 iframe 中自动登录远程站点内部
- 如何使用java脚本将iframe的src设置为当前访问的站点
- 检查IFrame是否嵌入到其他站点
- 异步表单w/Iframe Target——OnLoad适用于FF、Chrome、IE9,不适用于;无法在IE7中得到响应
- 在跨域站点中动态调整iframe的大小
- 如何在 iFrame 的 onload 事件中执行代码
- 读取跨站点 iframe 位置
- Jquery Iframe onload事件未在Google chrome上执行
- 如何在asp.net中获取iframe onload事件
- Iframe onload函数未定义
- 当url生成PDF输出时,Iframe onload不工作
- Safari没有'当src不是有效的站点时,不要调用iframe-onload
- 跨站点 iframe 帖子从子级到父级的消息
- 专注于 iFrame onLoad 中的元素