[英]Open new tab in background leaving focus on current tab - Chrome
如何在JavaScript中執行CTRL +點擊最新版Chrome(v68)中的鏈接?
上下文 - 我正在運行一個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()}
代碼:
window.open("previouspage.html");
window.location = "newpage.html";
//close the page
window.close();
我將此策略稱為“窗口翻轉”。
我部分解決了使用Chrome插件:強制背景標簽的問題
使用該附加組件,選項卡在后台打開,沒有焦點。 唯一的問題是窗口的最后一個使用的選項卡(可以與啟動新選項卡的選項卡不同)仍然會彈出正在使用的任何其他應用程序。
您可以嘗試使用一種彈出式窗口,在新選項卡中打開相同的URL,然后將當前選項卡的location.href更改為所需的新URL。
window.open(window.location.href);
window.location.href = 'http://www.google.com';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.