大きなページのスクリーンショットを撮るクロム拡張を作成しようとしています。chrome.tabs.captureVisibleTabが間違った領域をキャプチャします
私の単純な拡張機能は、ページの一部をスクロールしてキャプチャする必要があります。
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);
}
capturevisibletabは、いくつかの同じ領域をキャプチャする場合のような問題は、ショットは[]、imageurisの配列は、いくつかの同じimageurisが含まれていることです回。
firefoxでは、まったく同じコードが正常に機能しますが、firefoxのcapturevisibletabでは約束を返し、コールバックは必須ではありません。
問題が重複している[mcve]を含むトピックになるように質問してください。 Chrome拡張機能やFirefox WebExtensionsの場合は、* manifest.json *や背景/コンテンツ/ポップアップスクリプト/ HTMLの一部を含むことがほとんどです。 (1)望ましい動作、(2)特定の問題またはエラー、および(3)それを再現するために必要な最短のコードを含める必要があります。質問自体に*。また、[ここで私はどのような話題を聞くことができますか?](http://stackoverflow.com/help/on-topic)、[ask]を参照してください。 – Makyen