html5 – 检测iframe加载错误

前端之家收集整理的这篇文章主要介绍了html5 – 检测iframe加载错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用src属性用户选择的页面加载到iframe中.如果加载失败,我想报告这个问题,对用户来说是有意义的.一般来说,iframe不支持根据 http://www.w3schools.com/jsref/dom_obj_frame.asp错误.

页面可能来自用户的域,而不是我的域,所以我无法查看iframe的内容.

如果加载成功,我可以设置一个超时并从我的onload处理程序中取消它,但是它需要一个很长的超时时间才能避免错误的报告,同时我的iPhone上的Safari显示了可能会混淆用户的警报.即使这样对于Kindle Fire浏览器也是无效的 – 它会为我的处理程序提供一个加载事件,无论加载是否成功.

有什么事情可以用来检测失败?有什么办法可以抑制默认的Safari行为吗?以任何方式我可以判断加载尝试是否失败? (如果我可以这样做,我可以使用较短的超时和轮询,直到加载尝试解决).

我可以要求使用最新版本的浏览器,但是想要尽可能多的智能手机和平板电脑可以移植的解决方案.

我已经测试了AJAX Get的想法,不幸的是它不起作用.跨域AJAX获取到任意URI会导致异常,而不管目标是否存在,并且可以加载到iframe中.

解决方法

您可以设置您的iframe和/或ajax请求来始终调用您控制的页面(即:loader.PHP),通过get发送loader.PHP用户请求的页面.从loader.PHP,使用curl或甚至只是file_get_contents来获取外部页面.如果请求无法返回到loader.PHP,您可以检查那里的错误,并返回任何您希望的iframe显示.

虽然我的示例引用了PHP的使用,但curl支持各种脚本语言.它可能比您可能拥有的其他解决方案更复杂,但会让您访问响应标头以及排除页面加载失败的原因.

猜你在找的HTML5相关文章