javascript - 获取标签 ID 以便在创建后更新
问题描述
当浏览器创建一个新选项卡时,它从空白开始,然后使用about:blank
或更新about:newtab
。我需要 JavaScript 才能在扩展中更新它。
目前我有;
browser.tabs.onCreated.addListener(handleCreated);
browser.tabs.onUpdated.addListener(handleUpdate);
这使我可以知道何时创建新选项卡以及何时更新它。在此之后,我需要能够用这样的东西再次更新它;
var TabReplacement = {url: 'https://mycompany.com/newtab.html'};
browser.tabs.update(TabReplacement);
我只需要能够再次更新选项卡以获得自定义新选项卡,但它不应该影响通过在新选项卡中打开链接等创建的新选项卡。我知道它需要在事件侦听器时触发被激活。
您会立即更新选项卡还是获取选项卡 ID 然后通过选项卡 ID 进行更新?
TLDR;我想要与以下相同的功能:
{
"name": "My extension",
...
"chrome_url_overrides" : {
"about:newtab": "https://www.google.com"
},
...
}
包含在 Chrome 清单文件中,但这在 edge 中是不可能的。
提前致谢 :)
解决方案
根据我的理解,我猜你是在要求这样的东西,你想使用标签 ID 来更新标签。
function handleCreated(tab) {
var tabReplacement = {url: 'https://mycompany.com/newtab.html'}
browser.tabs.update(tab.id,tabReplacement);
}
function handleUpdated(tab) {
var tabReplacement = {url: 'https://mycompany.com/newtab.html'};
browser.tabs.update(tab.id,tabReplacement);
}
如果你想使用它也可以获取标签索引,如下所示:browser.tabs.query({index:1})
推荐阅读
- django - 使用 mongdb 更新 django 模型表单集中的 jsonfields
- javascript - 快速安装路线
- python - Pandas 根据条件搜索字符串
- ios - 在 Ionic 4 的应用程序中打开 facebook 链接在 iOS 中不工作(在 Android 中工作)
- angular - 在 Angular 8+(和 Ivy 就绪?)中以编程方式加载模块
- laravel-5 - Laravel 5.x 中的空白页
- kotlin - 将数组中的值分配给单个变量的惯用方法
- apache-spark - spark如何处理在DStream之外初始化的数据结构
- javascript - 如何在 OpenLayers 中绘制更复杂的图形对象?
- angularjs - 如何在信息窗口中使用 angularjs 翻译?