Ga *_*chi 18 html javascript google-chrome google-chrome-extension
如何在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');
Run Code Online (Sandbox Code Playgroud)
..新标签仍然是焦点.
重现步骤:
let winStacko;
setTimeout(() => { winStacko = open('https://www.stackoverflow.com'); }, 30 * 1000);
setTimeout(() => winStacko.close(), 2 * 60 * 1000);
期望的行为:
在过去,您可以使用以下内容来执行此操作:
if(window.focus == false)
{
this.focus();
}
Run Code Online (Sandbox Code Playgroud)
由于滥用者,现在您必须使用额外的插件。
解决方案:窗口翻转:
解决方案是创建另一个页面。当您单击链接时,窗口关闭,它切换到一个页面,打开刚刚关闭的窗口,并将其位置更改为新页面。
第 1 页代码:
document.getElementById("myId").onclick = function(){window.open("page2.html");window.close()}
Run Code Online (Sandbox Code Playgroud)
第2页代码:
window.open("previouspage.html");
window.location = "newpage.html";
//close the page
window.close();
Run Code Online (Sandbox Code Playgroud)
我将此策略称为“窗口翻转”。
由于您希望将其用于个人用途,并且不介意使用扩展名,因此可以编写自己的扩展名。
编写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
}
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)
注意:请注意
active
此处的参数,它定义选项卡是否应成为窗口中的活动选项卡。不影响窗口是否聚焦
3-在chrome中使用扩展名
Load Unpacked
按钮选择扩展文件夹 归档时间: |
|
查看次数: |
9403 次 |
最近记录: |