在 IE 上运行我的 javascript 程序时,它会永远循环。
它适用于 Firefox、Safari 和 Chrome。
Stackoverflow 中有一个类似的问题,但这里的建议是删除嵌入函数的函数名。我没有名字。
这里摘录了一个设置异步 httprequest 的函数。'rq' 是请求对象,已经调用了 open(),但没有调用 send()。
我正在尝试设置响应功能。我正在使用“self”var,以便函数具有相同的 this 指针(也是与调用函数相同的对象的成员)。
var self = this;
rq.onreadystatechange = function()
{
self._reqStateChange(rq); // *
} // *
this._req[sl]=rq;
rq.send(null);
return true;
IE 无限循环用 // * 标记的两行,也是嵌入函数中的第一个返回:
this._reqStateChange = function(rq)
{
if( (!rq) || rq.readyState!=4 )
return; // exits here every time.
IE 9.0,使用内置调试器。
没有 jQuery 或任何其他库。
我不知道。谢谢你的帮助。我想了解这里的逻辑...
笔记:
我只是建了一个小脚本,看看自建有没有错。这样可行。似乎与onreadystatechange函数有关。每次它退出时,都会立即再次调用它。
此代码不会锁定在 IE 中:
someObject = function()
{
this.callback = function(){}
this.funcCallsCallback = function()
{
// call the callback
this.callback();
};
}
muell = new function()
{
this.value = 42;
this.test = function()
{
var rq = new someObject();
var self = this;
rq.callback = function()
{
self.endFunc();
}
// now:
rq.funcCallsCallback();
};
this.endFunc = function()
{
alert("called! value="+this.value.toString());
};
}
muell.test();