window.location更改后的`chrome.tabs.executeScript`

时间:2017-08-21 08:37:03

标签: javascript sockets google-chrome google-chrome-extension

我想在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"
    });
});

如何暂停执行?有更好的方法吗?

0 个答案:

没有答案