0

在 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();
4

0 回答 0