我正在使用 src 属性将用户选择的页面加载到 iframe 中。如果加载失败,我想以对用户有意义的方式报告问题。 iframe 通常不支持 onerror 根据http://www.w3schools.com/jsref/dom_obj_frame.asp http://www.w3schools.com/jsref/dom_obj_frame.asp.
该页面可能来自用户的域,而不是我的域,因此我无法查看 iframe 的内容。
我可以设置超时并在加载成功时从 onload 处理程序中取消它,但这需要很长的超时以避免错误报告,同时我的 iPhone 上的 Safari 显示了一条可能会让用户感到困惑的警报。即使这对于 Kindle Fire 浏览器也不起作用 - 无论加载是否成功,它都会向我的处理程序传递一个加载事件。
我可以使用任何事件来检测故障吗?有什么办法可以抑制 Safari 的默认行为吗?有什么方法可以判断加载尝试是否失败? (如果我能做到这一点,我可以使用更短的超时并轮询,直到加载尝试得到解决)。
我可以要求使用最新的浏览器,但希望有一个可以在尽可能多的智能手机和平板电脑之间移植的解决方案。
我已经测试了 AJAX Get 想法,不幸的是它不起作用。跨域 AJAX Get 访问任意 URI 都会导致异常,无论目标是否存在并且是否可以加载到 iframe 中。
您可以将 iframe 和/或 ajax 请求设置为始终调用您控制的页面(即:loader.php),通过 get 向 loader.php 发送用户请求的页面。从 loader.php 中,使用curl 甚至只是file_get_contents 来获取外部页面。如果请求无法返回 loader.php,您可以检查那里的错误,并返回您希望 iframe 显示的任何内容。
虽然我的示例引用了 php 的使用,但多种脚本语言都支持curl。它可能比您可能拥有的其他解决方案更复杂,但也可以让您访问响应标头以及对页面加载失败的原因进行故障排除。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)