javascript - Chrome 扩展 : How to open a link in new tab?

标签 javascript html google-chrome google-chrome-extension tabs

在我的 Stackoverflow 文件夹中,我有 stackoverflow.ico 和 2 个文件。将其导入 Chrome 时,它​​会在地址栏中显示图标,但是当我单击它时,Chrome 不会打开任何新标签。我做错了什么?

list .json

{
  "name": "Stackoverflow",
  "version": "1",
  "browser_action":
  {
    "default_icon": "stackoverflow.ico"
  },
  "background":
  {
    "page": "index.html"
  },
  "permissions": ["tabs"],
  "manifest_version": 2
}

index.html

<html>
  <head>
    <script>
      chrome.browserAction.onClicked.addListener(function(activeTab)
      {
        var newURL = "http://stackoverflow.com/";
        chrome.tabs.create({ url: newURL });
      });
    </script>
  </head>
</html>

最佳答案

问题是你违反了manifest version 2's content security policy .要修复它,您所要做的就是摆脱内联脚本,在本例中是您的背景 page。把它变成这样的后台脚本:

list .json

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

background.js

chrome.browserAction.onClicked.addListener(function(activeTab){
  var newURL = "http://stackoverflow.com/";
  chrome.tabs.create({ url: newURL });
});

如果出于某种原因,您确实需要它成为一个页面,那么只需将脚本作为一个外部文件包含进来,并像以前一样将其声明为一个页面。

关于javascript - Chrome 扩展 : How to open a link in new tab?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16503879/

相关文章:

javascript - 在另一个 HTML 页面中创建 HTML 页面的 Webview 预览

javascript - 如何计算文本或字符串中的表情符号

javascript - 如何让 React Native 像媒体播放器一样运行(可能是 "foreground")?

javascript - 使用 angular.js 未显示内容

html - 如何在保持响应的同时使文本区域与选择的高度相同?

java - 从 Chrome 获取模拟器列表

javascript - Select2 取消选择所有值

html - 表单域对齐

javascript - 在 Chrome 上的 VSCode/Javascript 中放置断点

javascript - 如何使用 JS Regex 从 google 查询链接获取查询值? (Chrome 扩展)