【问题标题】:Chrome extension: How to open a link in new tab?Chrome 扩展程序:如何在新标签页中打开链接?
【发布时间】:2013-05-06 09:56:31
【问题描述】:

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

ma​​nifest.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>

【问题讨论】:

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


    【解决方案1】:

    问题是你违反了manifest version 2's content security policy。要解决这个问题,您需要做的就是摆脱内联脚本,在这种情况下,您的背景是 page。像这样把它变成背景script

    ma​​nifest.json

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

    background.js

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

    如果出于某种原因,您确实需要将其作为页面,则只需将脚本作为外部文件包含在内,然后像以前一样将其声明为页面。

    【讨论】:

    • 如何从 popup.js 发送 newURL ?
    • 这工作正常.. 但随后点击打开多个标签。有什么建议吗?
    【解决方案2】:

    在我的情况下,当我单击扩展弹出窗口中的链接时,我需要在新选项卡中打开链接,它可以在 target 属性设置为 _blank 时正常工作:

    <a href="http://www.example.com" target="_blank">Example</a>
    

    【讨论】:

    • 好吧,这将在浏览器中打开新标签,但会关闭弹出窗口(并不总是需要的)。
    【解决方案3】:

    我更喜欢simpler solution - 只需向 onclick 添加操作

    $('body').on('click', 'a[target="_blank"]', function(e){
        e.preventDefault();
        chrome.tabs.create({url: $(this).prop('href'), active: false});
        return false;
    });
    

    这将在新标签中打开所有具有 target="_blank" 属性的链接(甚至是动态创建的链接)而不会失去弹出焦点。

    【讨论】:

    • 你在哪里称呼这个?我的意思是它是在 content.js 还是 background.js 下写的?
    • 它是用 content.js 编写的
    【解决方案4】:

    你不需要 jQuery。只需使用window.open("http://example.com", "_blank")

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-23
      • 1970-01-01
      • 2017-11-14
      • 2014-01-04
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 1970-01-01
      相关资源
      最近更新 更多