【问题标题】:chrome.tabs.create - callback function never calledchrome.tabs.create - 从未调用过的回调函数
【发布时间】:2014-04-02 20:21:59
【问题描述】:

我想使用 Chrome 扩展程序创建一个新选项卡,并在加载选项卡时显示 tab.id。页面已加载,但回调函数不起作用(现在显示tab.id 的警报)。

background.js 文件:

chrome.tabs.create({'url': 'http://www.google.com'}, function(tab){ alert(tab.id) })

manifest.json 文件:

 {
     "name": "Test",
     "version": "1.0",
     "description": "Test plugin",
     "browser_action": {
         "default_popup": "popup.html",
         "default_icon":"icon.png"
     },
     "background": {
         "scripts": ["background.js"]
     },
     "manifest_version":2,
     "permissions": [
          "tabs",
          "http://*.facebook.com/*",
          "http://*.google.com/*",
          "storage"
     ]
}

popup.html 文件:

<html>
  <head>
    <title>Test tabs</title>
  </head>
  <body>
    <script type="text/javascript" src=/background.js"></script>
  </body>
</html>

可能是什么问题?

【问题讨论】:

    标签: javascript google-chrome google-chrome-extension


    【解决方案1】:

    您的代码必须位于background pages

    这在 manifest.json 文件中:

    "background" : {"scripts" : ["background_script.js"] }
    

    "background" : {"page" : "background_page.html" }
    

    在后台页面内引用文件时需要使用绝对路径:

    <script type="text/javascript" src="/background.js"></script>
    

    【讨论】:

    • 您在运行扩展程序时是否遇到任何异常/错误?
    • 扩展页面没有出现异常
    • 我的 popup.html 可能有问题?现在添加它
    • background.js 应该从 background.html 或类似的东西加载?
    • 仍然无法正常工作.. 仍然缺少某些东西。您是否尝试过使用这 3 个文件?很抱歉再次打扰您,感谢您的帮助
    【解决方案2】:

    我认为回调函数是在另一个上下文中执行的,并且警报将不起作用。 尝试打开后台页面和 DevTools 并使用 console.log(tab.id) 查看标签 ID。

    【讨论】:

    • 你能解释一下什么是“另一个上下文”吗?回调函数能做什么有一些限制?
    • @shtkuh Chrome 扩展脚本有 3 个执行上下文:-后台脚本(wxecuting 进入扩展)
      -内容脚本(可以读取和修改显示网页的 DOM)
      - 注入脚本
      更多信息link
    【解决方案3】:

    这是我的解决方案:
    chrome.tabs.create({url: URL, selected: false}, function(tab) { alert(tab.id) })

    不确定这是否符合您的预期,但警报会起作用!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-05
      • 2013-10-26
      • 2014-03-20
      • 1970-01-01
      • 1970-01-01
      • 2016-10-20
      • 1970-01-01
      相关资源
      最近更新 更多