【问题标题】:chrome.tabs.query returns .url as undefinedchrome.tabs.query 返回未定义的 .url
【发布时间】:2013-01-22 21:28:58
【问题描述】:

更新的问题:我可以 console.log 任意数量的选项卡,但没有选项卡具有 url 属性。

已解决的原始问题:我似乎无法让这段非常简单的代码在 background.js 中工作。我想访问这些选项卡,但它们总是以 object Object 的形式返回每个选项卡。

chrome.tabs.query({}, function(tab){
        alert(tab);
  });

我的清单文件中确实有标签,但即使没有它也没有什么区别。就我个人而言,我认为它不认为它具有选项卡的权限,但它确实并且我的其他权限(例如通知和 URL)工作正常。谢谢。

【问题讨论】:

  • alert 不是一个好的调试工具。它将所有内容转换为字符串。使用console.log
  • 如果我使用 console.log,我的控制台是空的。编辑:抱歉,在检查了 background.js 的控制台后,它仍然是未定义的。
  • 如果您提供一些查询信息(例如{ active: true }),您会得到任何结果吗?
  • 然后检查tab[0]到底是​​什么,这样你就知道你可以访问哪些属性。您确定您的扩展程序具有“标签”或“webNavigation”权限吗?
  • Console.log 未定义。但现在它的工作=/似乎你关于警报的提示是主要问题。谢谢!

标签: javascript google-chrome-extension tabs


【解决方案1】:

在 manifest.json 中添加 tabs 权限后,您需要删除并重新添加扩展,以便它考虑新权限。

【讨论】:

  • 上帝保佑你的灵魂!
【解决方案2】:

chrome.tabs.query 实际上返回一个 Tab objects 数组(这就是您看到 [object, Object] 的原因。尝试执行以下操作:

alert(tab[0].url);

并查看它是否显示了您所期望的内容。

【讨论】:

  • 这给了我未定义,tab[0].url 也是如此(因为 chrome.tabs.query 给了我一个我认为会给我一些东西的数组)
  • @Slappybag 对不起,将调整我的答案以反映数组部分。您对tab[0].url 的定义变得不确定?
  • 是的,我越来越不确定tab[0].url
  • @Slappybag 并且错误告诉您该位置的对象未定义或该对象的属性未定义?
  • @Slappybag 仔细检查一下,您的权限列表中肯定有tabs?我假设你的其他对象看起来和那个一样?
【解决方案3】:

您必须在 manifest.json 中的权限数组中添加“标签”,否则您将无法看到标签的 url。

【讨论】:

  • 如果您从文档中复制 permissions sn-p 并将其粘贴到 JSON 的末尾,这很容易搞砸,有效地隐藏了您之前的 permissions... :s
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-05
  • 1970-01-01
  • 2019-11-17
  • 1970-01-01
  • 1970-01-01
  • 2016-11-18
  • 2013-08-30
相关资源
最近更新 更多