javascript – JQUERY或JS有没有办法检测Window加载的时间?基本上任何网络活动?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – JQUERY或JS有没有办法检测Window加载的时间?基本上任何网络活动?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1892字,纯文字阅读大概需要3分钟。
内容图文
![javascript – JQUERY或JS有没有办法检测Window加载的时间?基本上任何网络活动?](/upload/InfoBanner/zyjiaocheng/812/8f36c00ee6ac4336928fbe94b2e20a3f.jpg)
有没有办法使用JQUERY或Javascript,检测浏览器窗口何时加载某些东西,进行ajax调用,加载图像等…基本上任何网络活动?
解决方法:
我在下面的回答和之前用户的回答只是试图检查浏览器当前是否正在发出XmlHttpRequest(即ajaxy)请求.
您询问是否可以判断浏览器是否正在发出任何网络请求(即下载images / css或者可能是长期运行的’comet’请求).我不知道有任何javascript API可以告诉你 – 它们可能存在,但我怀疑如果他们这样做,那么它们将是浏览器特定的[如果有人知道答案,请填写].显然像Firebug和dynaTrace这样的工具可以检测网络活动,但我认为这些工具比javascript代码更深入地浏览到浏览器.
说了这么多,如果你想计算jQuery产生的XHR,那么dave1010的答案看起来很好.
但是我觉得它很容易出现一些竞争问题: –
根据文档(http://api.jquery.com/ajaxStart/)
Whenever an Ajax request is about to be sent, jQuery checks whether there are any other outstanding Ajax requests. If none are in progress, jQuery triggers the ajaxStart event. Any and all handlers that have been registered with the .ajaxStart() method are executed at this time.
因此,如果一个长时间运行的XHR启动而另一个在第一个完成之前启动,则ajaxStart处理程序只会被调用一次.第二个XHR可以在第一个XHR之前完成并设置loading = false,即使第一个请求仍在进行中.
看看jQuery 1.4源代码似乎证实了这一点.有趣的是,jQuery 1.4有一些活跃的XHR(jQuery.active),但在文档中没有提到,所以最好不要使用它(这很可惜,因为它会让生活更容易一些).
有关在调用ajaxStart处理程序之前检查$.active为0的代码,请参阅http://gist.github.com/277432#LID5052.
[我认为]’ajaxSend’全局事件处理程序在每个XHR之前被调用.使用它优先于’ajaxStart’应该有所帮助,但我们仍然需要保留活动请求的数量,而不是简单的“加载”标志.
也许下面这样的东西会起作用吗?
var activeXhrCount = 0;
$(document).ajaxSend(function() {activeXhrCount++;}).ajaxComplete(function(){activeXhrCount--;});
请注意,如果任何代码在全局选项设置为false的情况下调用$.ajax,则会给出错误的答案,因此几乎不能防弹;
另外请记住,activeXhrCount只计算由jQuery生成的XHR – 来自其他库的那些你不会被计算.
内容总结
以上是互联网集市为您收集整理的javascript – JQUERY或JS有没有办法检测Window加载的时间?基本上任何网络活动?全部内容,希望文章能够帮你解决javascript – JQUERY或JS有没有办法检测Window加载的时间?基本上任何网络活动?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。