0

我正在尝试一个接一个地加载一组页面,并在当前请求完成后加载下一个,

现在在我的示例页面中,我只有一个 iframe,

<iframe onload="loadNext()"></iframe>

我使用以下脚本来完成这项工作,

    var i = 0;

    function loadNext()
    {
        var urls = [
        'http://localhost/a.htm',
        'http://localhost/b.htm',
        'http://localhost/c.htm',
        ];

        if (i > urls.length - 1)
        {
            console.log ("Done!");
            return;
        }

        document.querySelector('iframe').src = urls[i ++];
    }

但是onload事件触发的太快了,本以为会看到3个页面按顺序加载,但不是(来自Networkchrome浏览器的选项卡),我什至没有看到nginx中的访问日志。

任何想法为什么它不起作用?

4

1 回答 1

1

您的代码应该可以工作。我已经对此进行了测试,并且还在timeout每个帧加载之前添加了一个,以便您可以看到更改。

var URLs = [
    'http://localhost/a.htm',
    'http://localhost/b.htm',
    'http://localhost/c.htm',
    'http://localhost/d.htm'
];

function loadNext(){

    var frameWindow = document.getElementById('test').contentWindow;

    if(URLs.length > 0){
        setTimeout(function(){
            frameWindow.location.replace(URLs.shift());
        }, 1000);
    }
}

<iframe id="test" onload="loadNext();"></iframe>

难道是因为你是从 加载的localhost,所以加载时间太短了你没有注意到它?

于 2013-04-27T11:38:02.913 回答