8
chrome.tabs.query({ 
    active: true, 
    currentWindow: true 
    }, 
    function (tabs) { 
    chrome.tabs.captureVisibleTab(null 
     ,{ format: "png"}, 
     function (src) { 
      $('body').append("<img src='" + src + "'>" + tabs[0].url + "</img>");//appends captured image to the popup.html 
     } 
    ); 
}); 

Dieser Code hängt das aufgenommene Bild an den Textkörper von popup.html an. Aber was ich will, ist, das Bild an den Popup - Body anzuhängen, ich möchte einen neuen Tab mit chrome.tabs.create ({url: "newtab.html") öffnen und das aufgenommene Bild an diese newtab.html anhängen 'newtab.html' befindet sich bereits im Pfadordner).Chrome-Erweiterung - Öffnet den aufgenommenen Screenshot in der neuen Registerkarte

Vielen Dank im Voraus

Antwort

2

Es gibt eine Weise, die ich previosuly here beschrieben.

Der Kernpunkt ist, eine Registerkarte zu öffnen, die ein Skript enthält, und die Kommunikation mit ihm mithilfe von Messaging.

Ein kleines Problem, das auftritt, ist, dass Sie nicht wissen, wann die neu geöffnete Seite bereit ist. Ich löste das, indem ich die neu geöffnete Seite mit der Hintergrundseite selbst in Kontakt brachte, aber schlampig war mit nur einer globalen Variable.

Eine bessere Lösung wäre ein One-Shot-Ereignis-Listener, so etwas wie das sein:

// Execute this code from the background page, not the popup! 
function openScreenshot(src){ 
    chrome.tabs.create(
    { url: chrome.runtime.getURL("newtab.html") }, 
    function(tab) { 
     chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) { 
     // If the request is expected and comes from the tab we just opened 
     if(message.getScreenshot && sender.tab.id == tab.id) { 
      sendResponse(src); 
      // Ensure we're only run once 
      chrome.runtime.onMessage.removeListener(arguments.callee); 
     } 
     }); 
    } 
); 
} 

Other than that, folgen der verknüpfte Antwort.

Verwandte Themen