Javascript 为什么我的用于获取当前url的Chrome扩展的脚本不起作用?

Javascript 为什么我的用于获取当前url的Chrome扩展的脚本不起作用?,javascript,google-chrome-extension,permissions,Javascript,Google Chrome Extension,Permissions,我从Stack Overflow中获得了一个脚本,用于获取当前的Chrome选项卡,但每次我尝试运行它时,Google Chrome中都会出现以下错误: Uncaught TypeError: Cannot read property 'query' of undefined Context https://www.youtube.com/ Stack Trace **chrome.tabs.query({active: true, currentWindow: true}, tabs =&

我从Stack Overflow中获得了一个脚本,用于获取当前的Chrome选项卡,但每次我尝试运行它时,Google Chrome中都会出现以下错误:

Uncaught TypeError: Cannot read property 'query' of undefined
Context

https://www.youtube.com/
Stack Trace

**chrome.tabs.query({active: true, currentWindow: true}, tabs => {**
    let url = tabs[0].url;
    // use `url` here inside the callback because it's asynchronous!
});
粗体代码是错误中突出显示的代码。我试图用
lastFocusedWindow
替换
currentWindow
,但没有任何效果。权限都是正确的,我甚至添加了我不需要的额外权限,如下所示:

"permissions": [ 
    "tabs", 
    "<all_urls>",
    "activeTab" ]
“权限”:[
“标签”,
"",
“活动选项卡”]

我的脚本只需要
选项卡
,但我有
活动选项卡
,以防万一。这里的问题是什么?我如何解决它?

有两种方法

  • 调用
    getCurrent()
    。更多详细信息请参见您应该在哪个页面上执行脚本->

    chrome.tabs.getCurrent(函数回调)

  • 如果您希望在单击浏览器操作时显示当前URL,则

    chrome.browserAction.onClicked.addListener(activeTab=>{ log(activeTab); });


  • 错误消息显示
    chrome.tabs
    未定义,只有在内容脚本或普通页面脚本中尝试使用它时才会发生这种情况。内容脚本不能使用大多数ChromeAPI。您不需要chrome.tabs来获取内容脚本中的当前URL:只需使用
    location.href
    。每个匹配的选项卡都运行内容脚本的一个实例,因此不要将其与在单独隐藏的背景页中运行的背景脚本混淆。@wOxxOm如何在脚本中实现
    location.href
    ?这是一个标准功能,无需实现,只需使用它,示例很容易找到。@wOxxOm很抱歉,当您使用Google location.href时,我使用了非常复杂的Google关键字。这非常简单。内容脚本不能使用chrome.tabs或chrome.browserAction,请参阅。