特定の時間間隔の後にページを更新するクロム拡張機能を作成しています。正常に動作しましたが、新しい問題が発生しました。ページが更新されるたびに、タブが強調表示される (点滅し始める) か、フォーカスが移動します。つまり、集中しているということです。
現在、これは chrome ブラウザーの状態に応じて異なる動作をしますが、コアの問題は同じです: 1. ページが更新されるのを待っている間にユーザーがタブを別のタブに切り替えた場合 (gmail.com でメールを書いているとします)、現在のページを更新すると、メールタブに焦点が当てられなくなります(そのため、最初にウィンドウをクリックしないとメールを書き続けることができません)
ユーザーが自分のワークスペースで他のアプリケーション (私のコンピューター、Outlook など) に切り替えると、更新時にクロム アイコンがタスクバーで点滅し始めます (非常に煩わしい)。
ユーザーが複数の chrome ウィンドウを開いて、それぞれが更新コードを実行しているタブを持っている場合、更新時にそのウィンドウがフォーカスされます (一番上に来ます)。これは、特定の更新が発生するたびに、すべてのクロム ウィンドウに対して繰り返されます。
問題を再現する手順:
簡単な拡張機能を書く
バックグラウンド ページで、次を使用して新しいタブを作成します。
chrome.tabs.create({ url: "https://drive.google.com/", active: false})
ループ内で、1 分ごとに、このタブを次のように更新します。
chrome.tabs.update(tab_id, {url: "https://drive.google.com/", active: false, highlighted: false});
このコードを開始したら、クロム ウィンドウを最小化するか、ワークスペースを移動して他のことに集中してください。
tabs.update() が呼び出されるたびに、Chrome ウィンドウはタスク バーから最小化を解除するか、それにフォーカスを移します。
私が望むのは、ページが更新されるたびにこのフォーカスを削除することです。誰かがこれで私を助けてくれるなら、私はとても素晴らしいでしょう.
ありがとう、ウメール
編集:
私の background.js ファイルのコード
chrome.webNavigation.onErrorOccurred.addListener(function (_errorDetails) {
var myUrl = 'myPage.htm';
chrome.tabs.update(_errorDetails.tabId, { url: myUrl, active: false,
highlighted: false, selected: false },
function (_tabDetails) {
chrome.windows.update(_tabDetails.windowId, { drawAttention: false });
});
});
Iv は、フォーカスを停止するために、関連するすべてのパラメーターを false にしようとしました。
また、myPage.htm では、ページロード時に関数 reload() が呼び出されます。
function reloadPage() {
//code for 10 second delay
location.reload();
}
myPage.htm 自体は、「ページを読み込めません」などの数行のテキストを表示する単純なページです。