Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法获取选项卡URL_Javascript_Angular_Typescript_Google Chrome Extension - Fatal编程技术网

Javascript 无法获取选项卡URL

Javascript 无法获取选项卡URL,javascript,angular,typescript,google-chrome-extension,Javascript,Angular,Typescript,Google Chrome Extension,在我的Chrome扩展中,我想获取当前选项卡URL地址。在angular2组件中,我创建了字符串变量来保存URL。然后我会这样做: ngOnInit() { chrome.tabs.getCurrent(function(tab){ this.currentUrl = tab.url; }); console.log(this.currentUrl); } 在控制台中,我得到未定义的消息。因此,问题是如何将Chrome扩展函数结果分配给我的TypeScr

在我的Chrome扩展中,我想获取当前选项卡URL地址。在angular2组件中,我创建了字符串变量来保存URL。然后我会这样做:

ngOnInit() {
    chrome.tabs.getCurrent(function(tab){
        this.currentUrl = tab.url;
    });
    console.log(this.currentUrl);
}
在控制台中,我得到未定义的消息。因此,问题是如何将Chrome扩展函数结果分配给我的TypeScript变量?

该方法现在已被弃用

获取当前选项卡URL的推荐方法是使用chrome.tabs.query

用法示例:

chrome.tabs.query{'active':true,'lastFocusedWindow':true},函数选项卡{ var url=tabs[0].url; }; 这要求您请求访问以下浏览器中的chrome.tabs API:

需要注意的是,当前选项卡的定义可能会因扩展的需要而有所不同

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

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

在这个例子中,我选择使用lastFocusedWindow:true,因为Google调用了currentWindow


您可以使用此处定义的任何属性进一步优化选项卡查询:

我在清单文件中添加了权限,但仍然没有成功…如果我在chrome.tabs.query函数中添加console.log,它将打印出url,但函数结束后,它将变为未定义。如果url未定义,请尝试从中重新加载扩展chrome://extensions 这将重新加载扩展的配置并应用新添加的制表符权限。@NikasŽalias,因为它是异步的。这就是它的工作原理。使用回调函数中的变量。@NikasŽalias您应该先关闭chrome开发工具窗口。@vanloc我正在创建chrome扩展,所以window.location只返回chrome-extension://....Right. 这在你的情况下是不正确的。我删除了那个评论。
"permissions": [ ...
   "tabs"
]