it-swarm.com.de

Chrome-Erweiterung: Wie öffne ich einen Link in einem neuen Tab?

In meinem Stackoverflow-Ordner habe ich stackoverflow.ico und 2 untenstehende Dateien. Beim Importieren in Chrome wird das Symbol in der Adressleiste angezeigt. Wenn ich jedoch darauf klicke, öffnet Chrome keine neuen Registerkarten. Was mache ich falsch?

manifest.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>
56
Tuyen Pham

Das Problem ist, dass Sie gegen content security policy von Manifest-Version 2 verstoßen. Um das Problem zu beheben, müssen Sie das Inline-Skript, in diesem Fall page, entfernen. Verwandle es in einen Hintergrund script wie folgt:

manifest.json

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

background.js

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

Wenn Sie aus irgendeinem Grund eine Seite benötigen, fügen Sie das Skript einfach als externe Datei hinzu und deklarieren Sie es wie zuvor als Seite.

85
BeardFist

In meinem Fall musste ich den Link in einem neuen Tab öffnen, als ich auf einen Link im Erweiterungs-Popup-Fenster klickte. Es funktionierte gut, wenn das Attribut target auf _blank gesetzt war:

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

Ich würde einfachere Lösung vorziehen - fügen Sie einfach eine Aktion zu onclick hinzu

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

Dadurch werden alle Verknüpfungen (auch Verknüpfungen, die dynamisch erstellt wurden) geöffnet, die das Attribut "target =" _ blank "auf einer neuen Registerkarte haben, ohne den Popup-Fokus zu verlieren.

0
fvrab