96 votes

Extension Chrome : Comment ouvrir un lien dans un nouvel onglet ?

Dans mon dossier Stackoverflow, j'ai stackoverflow.ico et 2 fichiers ci-dessous. Lorsque je l'importe dans Chrome, l'icône apparaît dans la barre d'adresse, mais lorsque je clique dessus, Chrome n'ouvre pas de nouvel onglet. Qu'est-ce que je fais de mal ?

manifeste.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>

148voto

BeardFist Points 7513

Le problème est que vous violez manifeste de la version 2 content security policy . Pour résoudre ce problème, il suffit de se débarrasser des script en ligne, dans ce cas votre arrière-plan. page . Transformez-le en arrière-plan script comme ça :

manifeste.json

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

background.js

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

Si, pour une raison quelconque, vous avez besoin qu'il s'agisse d'une page, il suffit d'inclure le script en tant que fichier externe et de le déclarer comme une page comme précédemment.

31voto

Radik Nurgaliev Points 344

Dans mon cas, j'avais besoin d'ouvrir le lien dans un nouvel onglet lorsque je cliquais sur un lien dans une fenêtre popup d'extension. target défini comme suit _blank :

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

7voto

fvrab Points 570

Je préférerais une solution plus simple - ajoutez simplement une action à onclick

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

Cela ouvrira tous les liens (même ceux qui ont été créés dynamiquement) qui ont l'attribut target="_blank". dans un nouvel onglet sans perdre le focus sur la popup.

3voto

Jaxon Points 31

Vous n'avez pas besoin de jQuery. Utilisez simplement window.open("http://example.com", "_blank") .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X