当src不是有效站点时,Safari不会调用iframe onload

时间:2014-04-29 03:57:35

标签: javascript html iframe safari

对于以下iframe,Safari从不调用onload函数,也不会在iframe中显示任何内容。我测试的所有其他浏览器都会调用onload并显示默认的错误网页。

<html>
<body>
<iframe src="http://www.asdkjhjhkjhkjhjhjhfhkjhsdflkjahdsjfhasf.com"
        onload="alert('iframe loaded');">
</iframe>
</body>
</html>

为什么会这样?如果没有解决此问题的方法,那么我需要找到一种方法来检测iframe是否无法加载。

1 个答案:

答案 0 :(得分:4)

前几天我偶然发现了this post,并在Safari中找到了遗失load event的解决方法。该帖子是2011年,但似乎仍然有效。

针对Safari提出的解决方案是检查readyState 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> 事件,如下所示:

contentWindow

根据Mozilla's documentation on contentDocument,只有在Safari中运行此脚本时,您才需要在{{1}}中包含变通方法,但我将其保留在此处,以防您想要使用它跨浏览器。