Chrome 扩展程序:如何在新标签页中打开链接?

Posted

技术标签:

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

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

ma​​nifest.json


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

index.html

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

【问题讨论】:

【参考方案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://***.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")

【讨论】:

以上是关于Chrome 扩展程序:如何在新标签页中打开链接?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 javascript 在新标签页中打开 chrome 设置

在新标签页中从 iframe 中打开 PDF - Google Chrome

Chrome快捷键统计

chrome实用快捷键

在新标签页中打开链接在 Safari iOS 上不起作用

Chrome 快捷键使用