0

facebook.com,单击“链接”似乎会加载新页面,但(我相信)实际上只是用新代码更新现有页面,我怎么知道新内容何时完全加载?例如,当您访问 时facebook.com,您将从“主页”页面(新闻提要)开始。当您在导航栏中单击您的名字时,您将被带到facebook.com/yourname. 然而,它并不是一个真正的页面,因为用户脚本不会重新加载。

因此,我为我的用户脚本编写了一个小检查器,用于查看页面的当前 href 是否已更改:

var startURL;
var curURL;

function main() {
    startURL = window.location.href;
    console.log("initial page. src: "+startURL);
    setInterval(checkfornewpage, 500);
}

function checkfornewpage() {
    curURL = window.location.href;

    if(curURL != startURL) {
        console.log("new page. src: "+curURL);
        // do something
        startURL = curURL;
    }
}

main();

这工作正常,并在页面更改时通知我。但是,当尝试访问该新页面中的元素时,我发现我得到的是来自旧页面的内容。我认为这是因为即使window.location.href已更改,页面的其余部分也没有完全加载。

所以我决定在新页面上寻找一些我知道会改变的内容,以提示我新内容是否已完全加载。我选择了body标签类,因为每个新页面的类列表body总是不同的。我写了一个函数来观察这个,但是即使在body类列表完全改变之后,我的查询仍然会显示旧的页面数据。

我也尝试调用load()元素body,但它永远不会触发。

我不想使用某种setTimeout等待足够长的泛型......我想准确地知道它何时加载,以便我可以立即前进。想法?

4

0 回答 0