因此,您知道那些页面加载后必须等待一定时间才能使下载按钮出现的站点。在这种情况下,例如YouTube,页面加载完成,但是您还需要等待一段时间才能显示评论。所以问题是我要我的扩展在页面的某个div完成加载的情况下运行或至少运行一个函数(以注释div为例)。我已经尝试"run_at": "document_end"
了我的清单文件中的某些stackoverflows所说的内容,但是在加载注释后仍然没有执行该操作。我认为这是在页面完成加载后进行的,但是Youtube注释仍在加载后。有些我正在使用类似的东西setTimeout
我的content.js文件中的时间为10000毫秒,效果很好,但问题是某些注释的加载速度可能会更快,而某些注释的加载速度会变慢,并且我不想等待扩展加载的时间太长。有人得到帮助吗?抱歉,长话短说。
runAfter = _=> alert('Hi');
// I want that function to run after the comment section div has finished loading.
// I could use setTimeout for 10 seconds but it seems long to wait eg.
setTimeout(_=> { alert('Hi') }, 10000);
您可以尝试轮询以获取可见性。
function waitForEl(el) {
return new Promise((resolve, reject) => {
const intervalId = setInterval(() => {
if (document.querySelector(el)) {
clearInterval(intervalId);
resolve();
}
}, 500);
});
}
waitForEl("#comments").then(() => {
// comments should be loaded here
});
注释仍然无法加载,ID为#comments的Div可能已加载到窗口中,但是该div中的注释却没有加载,这可能就是问题所在。此脚本执行的操作是检查是否已加载带有ID注释的div(如果没有再等待的话)是否已加载(如果我安装正确的话)。
编辑,现在可以使用了,谢谢。如我之前所说,#comments div中的注释未加载,我只是更改
waitForEl("#comments")
为waitForEl("#comments #header-author")
comment div中的作者检查选项,即如果有作者,则加载注释。