我想在chrome标签中执行代码列表。在我的扩展中,我有一个与节点服务器的套接字连接,它提供了函数(作为字符串)。后台脚本正在侦听套接字消息并执行这些功能。我可以使用chrome.tabs.executeScript
API执行。
/*
This will be executed on socket message
I'm using babel to generate ES5 code. ES6 code as below
Ex: receivedFunc = "(function () {console.log("print something")})()"
*/
await Tabs.execute(tabInfo.id, {
code: receivedFunc,
runAt: "document_idle"
});
但由于这些脚本(按钮单击或表单提交或手动window.location更改),window.location
将被更改。我希望执行暂停,直到窗口位置更改完成。我可以听chrome.tabs.onUpdate.addEventListener()
获取特定选项卡的状态(回调函数接收tabNumber及其状态,无论是加载还是已完成加载)。
所以我正在寻找的是类似下面或更好的方法。
socket.on('message', (data) => {
let receivedFunc = data.func;
if(loading(tabNumber)){
waitUntilComplete();
await Tabs.execute(tabInfo.id, {
code: receivedFunc,
runAt: "document_idle"
});
});
如何暂停执行?有更好的方法吗?