Interfejs API rozszerzeń Chrome: chrome.tabs.captureVisibleTab na stronie Background to Content Script
Moim ogólnym celem było zrobienie zrzutu ekranu na stronie w tle za pomocą:
http://developer.chrome.com/extensions/tabs.html#method-captureVisibleTab
i przekaż go do skryptu treści, abym mógł użyć strony HTML DOM do analizy zrzutu ekranu i wyciąć go tak, jak bym chciał.
Jednak nie wydaje mi się, aby przekazywałem dataUrl z powrotem do skryptu treści za pomocą Message Passing:
http://developer.chrome.com/extensions/messaging.html
Próbowałem JSON.stringify (), ale bezskutecznie.
Działa to doskonale:
background.js
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
sendResponse({imgSrc:'hello'});
}
);
Przełączam ten kod i nic nie przechodzi:
background.js
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
chrome.tabs.captureVisibleTab(
null,
{},
function(dataUrl)
{
sendResponse({imgSrc:dataUrl});
}
)
}
);
Moim jedynym dowodem na to, że strona tła faktycznie robi zrzut ekranu, jest to, że mogę to zrobić
chrome.tabs.captureVisibleTab(null,{},function(dataUrl){console.log(dataUrl);});
i widzę
„data: image / jpeg; base64, / 9j / 4AAQSkZJRgABAQAAA .... etc ...”
zalogowany w background.html, który jest prawidłowy
Moje pytanie brzmi: jak mogę wysłać ten adres URL do skryptu treści?
Wolałbym nie wykonywać całej logiki na stronie w tle, która nie może kontrolować niczego na rzeczywistej widocznej stronie.