【问题标题】:How can I delay browser navigation from within an iframe for AJAX requests to complete?如何延迟 iframe 中的浏览器导航以完成 AJAX 请求?
【发布时间】:2012-06-06 19:53:08
【问题描述】:

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

我尝试过:

  • onbeforeunload - 在表单的 onsubmit 事件后未触发
  • onbeforeunload 似乎可以在其处于活动状态时阻止后台 javascript 事件
  • 使 AJAX 请求同步 - 没有帮助,可能是因为请求在卸载过程中开始
  • onunload - 在请求之后触发,但似乎无权减慢 AJAX 的导航速度

我很担心尝试:

  • 中断表单提交,因为提交时可能会运行 javascript
  • 创建浏览器扩展程序,因为存在未知风险和可能的计划超时
  • 直接运行来自父级的请求 - 该请求是在 JQuery 之上运行的内部库的一部分,绕过它会很脆弱

在所有情况下,我的目标浏览器都是 Google Chrome(最新版本)。

【问题讨论】:

    标签: javascript ajax google-chrome iframe


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-26
      • 1970-01-01
      • 2015-09-30
      • 1970-01-01
      • 1970-01-01
      • 2015-05-07
      相关资源
      最近更新 更多