如何在iframe中延迟浏览器导航以完成AJAX请求?

时间:2012-06-06 19:53:08

标签: javascript ajax google-chrome iframe

我正在使用bookmarklet将iframe注入另一个网站,并且当我提交页面上的任何表单时,我正试图将数据发布回我的服务器。不幸的是,在浏览器将所有连接作为导航的一部分丢弃之前,iframe内的AJAX请求并不总是完成。如何在onsubmit期间可靠地将数据发送回我的服务器?

我试过了:

  • onbeforeunload - 在表单的onsubmit事件
  • 后未触发
  • onbeforeunload似乎在活动时阻止了背景javascript事件
  • 使AJAX请求同步 - 没有帮助,可能是因为请求在卸载期间启动
  • onunload - 在请求之后启动,但似乎没有任何权限来减慢AJAX的导航速度

我担心尝试:

  • 打破表单提交,因为可能会在提交时运行javascript
  • 由于未知风险和可能的时间表超限而创建浏览器扩展
  • 直接运行来自父级的请求 - 请求是运行在JQuery之上的内部库的一部分,并且黑客攻击它将是脆弱的

在所有情况下,我定位的浏览器都是谷歌浏览器(最新版本)。

1 个答案:

答案 0 :(得分:0)

我最终产生了popunder窗口而不是使用AJAX请求,并从GET参数中提取数据。对浏览器的响应是一个HTML页面,其头部包含一个包含window.close()的脚本标记。这似乎暂时有效。