无法获取标签网址

时间:2017-03-10 11:31:12

标签: javascript angular typescript google-chrome-extension

在我的Chrome扩展程序中,我想获取当前的标签网址。在我的angular2组件中,我创建了字符串变量来保存URL。然后我这样做:

ngOnInit() {
    chrome.tabs.getCurrent(function(tab){
        this.currentUrl = tab.url;
    });
    console.log(this.currentUrl);
}

在控制台中,我收到消息 undefined 。所以问题是我如何将Chrome扩展功能结果分配给我的TypeScript变量?

1 个答案:

答案 0 :(得分:0)

现在不推荐使用chrome.tabs.getSelected()方法。

获取当前标签网址的推荐方法是使用chrome.tabs.query()

示例用法:

chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
    var url = tabs[0].url;
});

这要求您请求访问extension manifest中的chrome.tabs API:

"permissions": [ ...
   "tabs"
]

请注意,“当前标签”的定义可能因您的扩展程序需求而有所不同。

当您想要访问用户的焦点窗口(通常是最顶层的窗口)中的当前选项卡时,在查询中设置lastFocusedWindow: true是合适的。

设置currentWindow: true可让您获取当前正在执行扩展程序代码的窗口中的当前选项卡。例如,如果您的扩展程序创建了一个新窗口/弹出窗口(更改焦点),但仍希望从运行扩展程序的窗口访问选项卡信息,这可能很有用。

我选择在此示例中使用lastFocusedWindow: true,因为Google会调出currentWindow may not always be present的案例。

您可以使用此处定义的任何属性进一步优化标签查询:chrome.tabs.query

相关问题