我正在尝试修改ajax回调而实际上没有访问原始代码(不要问...),我在Stack Overflow上找到了类似版本的下面的代码,我觉得这很好用!我把它放到我的网站上,在所有浏览器中进行测试,甚至在移动设备上测试成功。
所以我本周部署了它,而且,我发现,对于大约四分之一到三分之一的用户来说,这并没有正常启动。我一直在努力复制这个问题,但同样,我的所有测试都取得了成功。
我的分析告诉我,IE,Firefox和Chrome存在问题,每个版本都有最新版本,不会出现一个浏览器或其他浏览器。从问题的本质来看,我知道原来的ajax回调功能正常;这只是我的新额外代码被打破了。
我写的网站特定代码不应该在线发布,而stackoverflow不是jsLint,所以我在这里用“some code”替换它。我只想说,我一直在寻找潜在的错误,但我想知道是否有人知道为什么下面的代码在某些而不是所有情况下都不能正常工作。因为以下是唯一我不确定的代码。
function init(){
"use strict";
var send = window.XMLHttpRequest.prototype.send,
onReadyStateChange;
function sendReplacement(data) {
if(this.onreadystatechange) {
this._onreadystatechange = this.onreadystatechange;
}
this.onreadystatechange = onReadyStateChangeReplacement;
return send.apply(this, arguments);
}
function onReadyStateChangeReplacement() {
if(this._onreadystatechange) {
var end = this._onreadystatechange.apply(this, arguments);
}
some code
if (this._onreadystatechange){return end}
}
window.XMLHttpRequest.prototype.send = sendReplacement;
}