JavaScript检测AJAX事件

JavaScript检测AJAX事件,第1张

JavaScript检测AJAX事件

好的,这是我到目前为止提出的:

<script type='text/javascript'>var s_ajaxListener = new Object();s_ajaxListener.tempOpen = XMLHttpRequest.prototype.open;s_ajaxListener.tempSend = XMLHttpRequest.prototype.send;s_ajaxListener.callback = function () {  // this.method :the ajax method used  // this.url    :the url of the requested script (including query string, if any) (urlenpred)   // this.data:the data sent, if any ex: foo=bar&a=b (urlenpred)}XMLHttpRequest.prototype.open = function(a,b) {  if (!a) var a='';  if (!b) var b='';  s_ajaxListener.tempOpen.apply(this, arguments);  s_ajaxListener.method = a;    s_ajaxListener.url = b;  if (a.toLowerCase() == 'get') {    s_ajaxListener.data = b.split('?');    s_ajaxListener.data = s_ajaxListener.data[1];  }}XMLHttpRequest.prototype.send = function(a,b) {  if (!a) var a='';  if (!b) var b='';  s_ajaxListener.tempSend.apply(this, arguments);  if(s_ajaxListener.method.toLowerCase() == 'post')s_ajaxListener.data = a;  s_ajaxListener.callback();}</script>

方向:

只需将其c / p到您的页面上,或将其包含在.js文件中或其他内容中即可。这将创建一个名为s_ajaxListener的对象。每当发出AJAX
GET或POST请求时,都会调用s_ajaxListener.callback(),并且以下属性可用:

s_ajaxListener.method
:使用的ajax方法。这应该是GET或POST。注意:该值可能并不总是大写,这取决于特定请求的编码方式。我正在讨论自动将其大写或将其留给toLowerCase()进行区分大小写的比较的智慧。

s_ajaxListener.url
:所请求脚本的URL(包括查询字符串,如果有的话)(使用urlenpred)。我已经注意到,取决于如何发送数据以及从哪个浏览器/框架发送数据,例如,此值最终可能是“”或“
+”或“%20”。我正在讨论在此处解码或将其留给其他东西的智慧。

s_ajaxListener.data :发送的数据,如果有的话,例如:foo = bar&a = b(与.url相同的“问题”,并使用url编码)

笔记:

就目前而言, 这与IE6不兼容
。这个解决方案对我来说还不够好,因为我希望它与IE6兼容。但是由于很多其他人都不关心IE6,所以我决定将解决方案发布到当前状态,因为如果您不关心IE6,它对您来说就会有用。

我已经在 (截至发布日期)对此 进行了测试
:当前的Safari,当前的Chrome,当前的FireFox,IE8,IE8(与IE7兼容)。它当前不适用于IE6,因为IE6使用ActiveX对象,而实际上其他所有东西都使用XMLHttpRequest。

现在,我没有任何线索,基本上,原型/扩展/重载(?)ActiveXObject(“
Microsoft.XMLHTTP”)。这就是我目前正在研究的…有人知道吗?

在我上面测试过的每种浏览器下,它都可以处理来自通用对象以及jquery和原型框架的AJAX请求。我知道还有其他框架,但是IMO这两个是主要框架。我可能会对MooTools进行质量检查,但除此之外,我只测试它们就可以了。

如果有人想通过测试和发布有关其他浏览器和/或框架的结果做出贡献,将不胜感激:)



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5440288.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存