上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
等待足够长的泛型......我想准确地知道它何时加载,以便我可以立即前进。想法?