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.

questionAnswers(1)

yourAnswerToTheQuestion