fun*_*ptr 3 html javascript safari iframe
对于下面的 iframe,Safari 从不调用 onload 函数,也不会在 iframe 中显示任何内容。我测试过的所有其他浏览器都会调用 onload 并显示默认错误网页。
<html>
<body>
<iframe src="http://www.asdkjhjhkjhkjhjhjhfhkjhsdflkjahdsjfhasf.com"
onload="alert('iframe loaded');">
</iframe>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
为什么会这样?如果这个问题没有解决方案,那么我需要找到一种方法来检测iframe是否加载失败。
前几天我偶然发现了这篇文章,其中包含load event
Safari 中丢失的解决方法。该帖子是 2011 年的,但似乎仍然有效。
为 Safari 提出的解决方案是检查'sreadyState
上的事件,如下所示:iframe
document
<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>
Run Code Online (Sandbox Code Playgroud)
根据Mozilla 关于 contentDocument 的文档,contentWindow
仅在 Safari 中运行此脚本时,您不需要包含解决方法,但我将其保留在此处,以防您想跨浏览器使用它。