Ich versuche eine Chrome-Erweiterung zu erstellen, die einen Screenshot von einer großen Seite erstellt.chrome.tabs.captureVisibleTab fängt den falschen Bereich ein
Hier ist eine meiner einfachen Erweiterung, die zu einigen Teilen einer Seite scrollen und erfassen sollte.
manifest.json
{
"manifest_version": 2,
"name": "screenshot_test",
"version": "1.0",
"permissions": [
"tabs",
"<all_urls>"
],
"background": {
"scripts": ["background.js"]
},
"browser_action": {
"default_icon": "icon.png"
}
}
background.js
chrome.browserAction.onClicked.addListener(capture)
function capture(){
function scroll(point, callback){
chrome.tabs.executeScript({
code: 'window.scrollTo('+JSON.stringify((point.x))+','+JSON.stringify(point.y)+')',
}, callback)
}
function capturetab(){
chrome.tabs.captureVisibleTab(function(imageUri){
shots.push(imageUri);
});
}
var shots=[];
var points=[{x: 0, y: 0}, {x: 500, y: 500},{x: 1000, y: 1000}];
for (var i=0; i<3; i++) scroll(points[i], capturetab);
console.log(shots);
}
Das Problem ist, dass Schüsse [], die Anordnung von imageuris, einige identischen imageuris enthalten, wie wenn capturevisibletab die gleiche Fläche mehr einfängt mal.
In Firefox funktioniert genau der gleiche Code ganz gut, mit der Ausnahme, dass in Firefox capturevisibletab Versprechen und Rückruf ist kein Muss.
Bitte bearbeiten Sie die Frage zum Thema: Fügen Sie ein [mcve] ein, das das Problem dupliziert. Bei Chrome-Erweiterungen oder Firefox-WebExtensions bedeutet dies fast immer, dass Sie * manifest.json * und einige der Hintergrund-, Inhalts- und/oder Popup-Skripts/HTML einfügen. Fragen, die Debugging-Hilfe suchen ("Warum funktioniert dieser Code nicht so, wie ich will?") Muss Folgendes enthalten: (1) das gewünschte Verhalten, (2) ein spezifisches Problem oder einen Fehler und (3) den kürzesten Code, der für die Reproduktion erforderlich ist * in der Frage selbst *. Bitte beachten Sie auch: [Was kann ich hier fragen?] (Http://stackoverflow.com/help/on-topic) und [fragen]. – Makyen