在服务器响应之前检测iframe内容更改

乍得·利维

是否可以检测iframe的内容何时将要更改,例如请求何时开始(用户单击iframe中的链接的结果)而服务器尚未发送响应?

背景:

我有一个旧版Web应用程序,该应用程序在不显示加载状态的容器中使用。此网络应用程序还使用iframe来模拟部分页面加载。所有导航都在该iframe中进行。

当加载iframe中的页面时,我通过监视iframe的onreadstatechange事件(仅适用于IE)在iframe的父页面上显示加载动画

$('#iframe').on('readystatechange', function () {
    var state = this.readyState;

    (state === 'loading' || state === 'interactive') && $('#loading').show();
    state === 'complete' && $('#loading').hide();
});

但是,该实现具有明显的局限性。当发出请求的时间与Web服务器响应的时间之间存在间隙时,就会出现问题。

例如,如果用户在iframe中单击触发某种长时间运行过程的链接,则由于Web服务器尚未发送其响应,因此状态指示符动画不会显示。状态指示器动画仅在服务器发送响应并且新页面开始加载之后显示(where readyState === 'loading')。

因此,最终结果是有时用户不知道正在发生任何事情。在典型的Web浏览器中,当您单击链接时,即使服务器花时间响应,也会播放加载动画。因为我的Web应用程序包含在WinForms WebBrowser控件中(并且我没有WinForms应用程序的控件),所以没有任何迹象表明最终用户正在发生任何事情。

尤里·加兰特(Yuriy Galanter)

由于iframe页面和父页面的来源相同,因此它们可以相互通信。您要做的就是将处理程序附加到iframe contentWindowonbeforeunload事件。

您将在onbeforeunloadcontentWindow事件中显示“正在加载...” -因为它发生在页面开始导航之前,而在iframe中onload隐藏“正在加载...”,因为它发生在之后。

这是演示:http : //jsfiddle.net/xga7Q/1/单击需要花费一些时间才能加载的链接(例如,展开“示例”并选择任何示例。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

服务器端检测iframe

来自分类Dev

Couchbase 服务器,检测文档更改

来自分类Dev

OWIN更改响应服务器身份?

来自分类Dev

根据服务器响应更改DIV

来自分类Dev

发送初始Web服务器响应之前,如何检测服务器端浏览器是否支持Javascript?

来自分类Dev

如何检测服务器是否通过TIdTCPClient响应请求?

来自分类Dev

在服务器关闭连接之前,浏览器不会响应服务器发送的事件

来自分类Dev

重定向之前等待服务器响应

来自分类Dev

服务器错误时如何获取响应内容

来自分类Dev

忘记更改名称服务器之前先备份

来自分类Dev

如何根据服务器响应更改PeriodicalExecuter的频率?

来自分类Dev

如何根据服务器响应动态更改视图的值?

来自分类Dev

SignalR-更改服务器超时响应

来自分类Dev

服务器发送图像作为响应,并在服务之前将其重命名-Symfony 2

来自分类Dev

如何设置简单的netcat服务器,该服务器在返回HTTP响应之前就进入睡眠状态

来自分类Dev

访问服务器响应

来自分类Dev

NSUrlSessionTaskDelegate服务器响应

来自分类Dev

BinaryJS服务器响应

来自分类Dev

对服务器的高响应

来自分类Dev

打印服务器响应

来自分类Dev

灰烬未从服务器响应中检测到所有属性

来自分类Dev

Perl Net::SSLeay post_https 如何检测服务器没有响应

来自分类Dev

node.js服务器句柄请求回调函数在写入响应之前结束

来自分类Dev

在服务器关闭连接之前,客户端不会收到响应消息(Java)

来自分类Dev

如何在调用Apollo Graph QL查询之前等待服务器响应?

来自分类Dev

Python-如果服务器在PUT完成之前回答,HTTP模块将无法解析响应

来自分类Dev

如何在响应之前访问Express(js)会话cookie服务器端?

来自分类Dev

Web 服务器能否在客户端发送完整请求之前开始响应?

来自分类Dev

测试 Kafka HA 并获取,NetworkException:服务器在收到响应之前断开连接

Related 相关文章

  1. 1

    服务器端检测iframe

  2. 2

    Couchbase 服务器,检测文档更改

  3. 3

    OWIN更改响应服务器身份?

  4. 4

    根据服务器响应更改DIV

  5. 5

    发送初始Web服务器响应之前,如何检测服务器端浏览器是否支持Javascript?

  6. 6

    如何检测服务器是否通过TIdTCPClient响应请求?

  7. 7

    在服务器关闭连接之前,浏览器不会响应服务器发送的事件

  8. 8

    重定向之前等待服务器响应

  9. 9

    服务器错误时如何获取响应内容

  10. 10

    忘记更改名称服务器之前先备份

  11. 11

    如何根据服务器响应更改PeriodicalExecuter的频率?

  12. 12

    如何根据服务器响应动态更改视图的值?

  13. 13

    SignalR-更改服务器超时响应

  14. 14

    服务器发送图像作为响应,并在服务之前将其重命名-Symfony 2

  15. 15

    如何设置简单的netcat服务器,该服务器在返回HTTP响应之前就进入睡眠状态

  16. 16

    访问服务器响应

  17. 17

    NSUrlSessionTaskDelegate服务器响应

  18. 18

    BinaryJS服务器响应

  19. 19

    对服务器的高响应

  20. 20

    打印服务器响应

  21. 21

    灰烬未从服务器响应中检测到所有属性

  22. 22

    Perl Net::SSLeay post_https 如何检测服务器没有响应

  23. 23

    node.js服务器句柄请求回调函数在写入响应之前结束

  24. 24

    在服务器关闭连接之前,客户端不会收到响应消息(Java)

  25. 25

    如何在调用Apollo Graph QL查询之前等待服务器响应?

  26. 26

    Python-如果服务器在PUT完成之前回答,HTTP模块将无法解析响应

  27. 27

    如何在响应之前访问Express(js)会话cookie服务器端?

  28. 28

    Web 服务器能否在客户端发送完整请求之前开始响应?

  29. 29

    测试 Kafka HA 并获取,NetworkException:服务器在收到响应之前断开连接

热门标签

归档