我可以使用load事件检测何时加载了iframe的内容.不幸的是,就我的目的而言,这有两个问题:
是否有某种方法可以确定是否发生上述任何一种错误?
我正在编写一个基于Mozilla/XULRunner的半网络半桌面应用程序,因此欢迎只在Mozilla中运行的解决方案.
我使用jQuery Form插件进行异步表单提交.对于包含文件的表单,它会将表单复制到隐藏的iframe,提交它,并复制iframe的内容.问题是我无法弄清楚如何找到服务器返回的HTTP状态代码.例如,如果服务器返回404,则iframe中的数据将被正常复制并视为常规响应.
我试过在iframe对象中寻找某种status_code属性,但是却找不到那样的东西.
该$.ajax()功能无法使用,因为它不支持上传文件.异步上传我所知道的文件的唯一方法是使用隐藏iframe方法.
我正在使用src属性将用户选择的页面加载到iframe中.如果加载失败,我想以对用户有意义的方式报告问题.根据http://www.w3schools.com/jsref/dom_obj_frame.asp,iframe一般不支持onerror .
该页面可能来自用户的域,而不是我的,因此我无法查看iframe的内容.
如果加载成功,我可以设置超时并从我的onload处理程序中取消它,但是需要长时间超时以避免错误报告,同时我的iPhone上的Safari已经显示警告,可能会使用户感到困惑.即使这对Kindle Fire浏览器也不起作用 - 无论加载是否成功,它都会向我的处理程序提供加载事件.
我可以使用任何事件来检测故障吗?有没有办法抑制默认的Safari行为?我能判断加载尝试是否失败的任何方式?(如果我能做到这一点,我可以使用更短的超时和轮询,直到加载尝试得到解决).
我可以要求使用最新的浏览器,但想要一个可以在尽可能多的智能手机和平板电脑中移植的解决方案.
我已经测试了AJAX Get的想法,但遗憾的是它没有用.跨域AJAX获取任意URI会导致异常,无论目标是否存在且是否可以加载到iframe中.