Javascript Chrome扩展-等待页面重新加载以继续脚本
我正在开发一个chrome扩展来自动化我的一些工作。 当前,它在搜索中输入一个值,然后单击搜索按钮 我想让它点击另一个按钮时,它进入下一页(一旦加载)。但是到达新页面所需的时间各不相同,因此我不能使用setTimeout(页面加载将花费3秒到3分钟的时间,根据我在搜索中输入的内容完全随机) 所以我被难住了。我究竟如何告诉脚本等待新页面加载?在控制台网络选项卡中,我可以看到它在执行之前处于挂起状态。有什么方法可以让我在这里等待吗?或者是否有某种类型的变体观察器可以用来检测新的页面加载 谢谢有两种方法:Javascript Chrome扩展-等待页面重新加载以继续脚本,javascript,jquery,google-chrome,google-chrome-extension,Javascript,Jquery,Google Chrome,Google Chrome Extension,我正在开发一个chrome扩展来自动化我的一些工作。 当前,它在搜索中输入一个值,然后单击搜索按钮 我想让它点击另一个按钮时,它进入下一页(一旦加载)。但是到达新页面所需的时间各不相同,因此我不能使用setTimeout(页面加载将花费3秒到3分钟的时间,根据我在搜索中输入的内容完全随机) 所以我被难住了。我究竟如何告诉脚本等待新页面加载?在控制台网络选项卡中,我可以看到它在执行之前处于挂起状态。有什么方法可以让我在这里等待吗?或者是否有某种类型的变体观察器可以用来检测新的页面加载 谢谢有两种方
tabs
API检查页面何时加载。完成后,向该选项卡发送消息并继续脚本window.addEventListener('load', function() {
$('#anotherButton').click();
});
应该可以工作。没有任何代码就不容易帮助您。但在我自己的扩展中,每次加载或重新加载页面时,都会调用我的内容脚本。然后,我只需检查
location.href的值(或部分值),以了解发生了什么,并相应地进行分支。最后,这是一个逻辑故障。因为它是javascript,所以面向前端,而且我不想干扰多个选项卡,所以我不得不接受我无法监听页面重新加载(很明显,脚本是随着重新加载一起进行的)。我只是让脚本监听主url。如果它找到了主url,则很可能是在脚本的第一个实例中,因此我将0作为函数的参数传递。如果它不在主页上,我会传递一个1,触发另一行逻辑。最后,我在页面上使用长度计数来表示页面差异,然后在此基础上传递不同的参数。我制作了一个帮助函数,每500毫秒检查一次当前选项卡的加载状态:
函数等待加载(回调){
chrome.tabs.query({active:true,currentWindow:true},(tabs)=>{
let timer=setInterval(()=>{
chrome.tabs.executeScript(制表符[0].id{
代码:`eval(“document.readyState”)`,
},(数据)=>{
如果(数据[0]=“完成”){
回调函数()
清除间隔(计时器)
}
})
}, 500)
})
}
我正在以内容脚本的形式运行它。它是一个在集合网站上运行的.js文件。不幸的是,后者似乎不起作用。当您单击“搜索”时,页面会重新加载,或者只是通过AJAX等加载内容?导航到新页面您指的是您的内容脚本。
window.addEventListener('load', function() {
$('#anotherButton').click();
});