-1

私は、私用のポップアップベースの Web 拡張機能を作成しています。基本的に、複数の Web サイトで情報を確認するという繰り返しのタスクを実行します。

訪問したサイトの順序は、ポップアップによって制御されます。ページを 1 つずつ確認できるようにするために、拡張ポップアップでブラウザ ウィンドウをそのサイトに転送し、onload イベントを設定して、完全な html がロードされたら通信できるようにします。

関連する拡張コードは現在次のようになっています。

function inject(jscode)
{
    browser.tabs.executeScript(null, {code: jscode});
}
...
...
...

// next_url contains the url string of the next website to be visited
// stop contains a bool to decide if more actions will happen
if( next_url != '')
{
    inject("window.location.assign('" + next_url + "');")
    if( !stop )
    {
        await new Promise(resolve => setTimeout(resolve, 5000));
        inject("browser.runtime.sendMessage({action: 'getSource', source: document.documentElement.innerHTML });")
    }
}

これは、Web サイトと拡張機能の間で通信が行われるように、関連するすべてのリスナーが設定されている場合に機能します。

getSourceただし、現在のページではなく完全にロードされた次のページにアクションが適用されるように、新しい Web サイトをロードするたびにポップアップが 5 秒間スリープする必要があるのは好きではありません。これまでのところ、リダイレクトを開始し、その URL をロードするための onload-event を即座にセットアップする方法を見つけていません。

このコードをどのように改善できますか?

4

1 に答える 1