JavaScriptでCtrlキーを押しながらChrome(v68)の最新バージョンで動作するリンクをクリックする方法は?
コンテキスト-特定のタブを1日の特定の時間に開く(数分後に閉じる)JavaScriptスクリプトを実行しています。私が使用している現在のタブにフォーカスを置いたまま、バックグラウンドでタブを開くようにしようとしています。
プログラムで開かれたタブは、最小化された場合でもポップアップするためにChromeを導き、非常に混乱します。
これらの 古いソリューション Stack Overflowで私がここで見つけたのは、Chromeの最新バージョンでは動作しません。
手動でCtrlキーを押しながらリンクをクリックすると、目的の効果が得られます(タブはバックグラウンドで開きます)。 Chromeの最新バージョンでこれをプログラムで実現できますか?
次のコードは、Chromeの最新バージョンでは動作しません。
_const openNewBackgroundTab = (url) => {
const anchor = document.createElement("a");
anchor.href = url;
document.body.appendChild(anchor);
const evt = document.createEvent("MouseEvents");
// the tenth parameter of initMouseEvent sets ctrl key
evt.initMouseEvent(
"click", true, true, window, 0, 0, 0, 0, 0,
true, false, false, false, 0, null
);
anchor.dispatchEvent(evt);
}
openNewBackgroundTab('https://stackoverflow.com');
_
..新しいタブが引き続きフォーカスされます。
再現するステップ:
let winStacko; setTimeout(() => { winStacko = open('https://www.stackoverflow.com'); }, 30 * 1000); setTimeout(() => winStacko.close(), 2 * 60 * 1000);
望ましい動作:
これを個人的に使用したい場合、および拡張機能を使用してもかまわない場合は、独自の拡張機能を作成できます。
chrome拡張機能を作成して必要な動作を実現するのは、実際には非常に簡単です。拡張機能からタブを開閉する方法を知っているだけです。次のページで [ 〜#〜] api [〜#〜]
以下に例を示します。
1-manifest.json
ファイルを作成し、tabs
パーミッションを要求します
{
"name": "blabla",
"version": "0.1",
"permissions": ["tabs"],
"background": {
"persistent": false,
"scripts": ["background.js"]
},
"browser_action": {
"default_title": "Open a background tab every x time"
},
"manifest_version": 2
}
2-同じフォルダーにbackground.js
スクリプトを作成します
const INTERVAL = 5000;
setTimeout(function(){
chrome.tabs.create({url: "https://www.stackoverflow.com", active: false }, tab =>{
setTimeout(function(){
chrome.tabs.remove(tab.id);
},INTERVAL);
});
},INTERVAL);
注:ここで
active
パラメーターに注意してください。これは、タブがウィンドウ内のアクティブなタブになるかどうかを定義します。ウィンドウがフォーカスされているかどうかには影響しません
3-chromeの拡張機能を使用します
Load Unpacked
ボタンをクリックして、拡張機能フォルダーを選択します昔は、次のようなものを使用してこれを行うことができました。
if(window.focus == false)
{
this.focus();
}
悪用者のため、追加のプラグインを使用する必要があります。
解決策:ウィンドウのロールオーバー:
解決策は、別のページを作成することです。リンクをクリックすると、ウィンドウが閉じ、閉じたばかりのウィンドウを開くページに切り替わり、その場所を新しいページに変更します。
ページ1コード:
document.getElementById("myId").onclick = function(){window.open("page2.html");window.close()}
ページ2コード:
window.open("previouspage.html");
window.location = "newpage.html";
//close the page
window.close();
私はこの戦略を呼んでいます"Window Rollover。"
I[〜#〜] partialally [〜#〜]Chromeプラグイン:Force Background Tab
そのアドオンを使用すると、タブはフォーカスなしでバックグラウンドで開きます。唯一の問題は、ウィンドウの最後に使用されたタブ(新しいタブを起動するタブとは異なる場合があります)が、使用中の他のアプリケーションの前にポップアップすることです。
新しいタブで同じURLを開き、現在のタブのlocation.hrefを目的の新しいURLに変更するようなポップを試すことができます。
window.open(window.location.href);
window.location.href = 'http://www.google.com';