現在、別のページから複数のスクリーンショットを取得してエンドポイントに投稿するGoogle Chrome拡張機能をビルドしています。 私が持っている問題は、タイミングがオフであるということです。私が言っていることは、スクリーンショットが読み込みが停止する前に、スクリーンショットが早すぎるということです。 2つ目は、リンクタイプWE(PAタイプの最初のものではない)から2つ目のスクリーンショットを受信することです。アクションが速すぎてPAをスキップするだけです。私はJSで本当にうまくいきません。誰かがこのコードをより良くするための指針を持っていれば、私はすべて耳です。ありがとうございました。Google Chromeの拡張機能のjavascriptのスクリーンショット
background.js
var id = 100;
var currentObject;
var myTimer;
function wait()
{setTimeout(wait, 1000);}
chrome.browserAction.onClicked.addListener(
function fireTimer() {
localStorage["allLocations"] = JSON.stringify([{
'type': 'PA',
'url': 'https://app.powerbi.com/groups/me/reports/ReportSection2?chromeless=true'
},
{
'type': 'WE',
'url': 'https://app.powerbi.com/groups/me/reports/ReportSection?chromeless=true'
}]);
myTimer = setInterval(fireScreenshots, 1*60*1000);
});
function fireScreenshots(){
var allLocations = JSON.parse(localStorage["allLocations"]);
allLocations.forEach(function (arrayItem)
{
if (arrayItem.type != undefined && arrayItem.url != undefined){
retrieveWebPage(arrayItem)
}
});
}
function retrieveWebPage(data){
currentObject = data;
chrome.tabs.update({
url: currentObject.url
});
chrome.tabs.onUpdated.addListener(function updatedListener(tabId , info) {
chrome.tabs.onUpdated.removeListener(updatedListener);
if (info.status == 'complete' && currentObject != undefined) {
chrome.tabs.captureVisibleTab(null, {format: "jpeg", quality: 100}, function(screenshotUrl) {
var xhr = new XMLHttpRequest() , formData = new FormData();
formData.append("image", screenshotUrl);
formData.append("dashboard_type", currentObject.type);
xhr.open("POST", "http://intranet/api/powerbi/screenshots_upload/");
xhr.send(formData);
});
}
});
}
「待機」機能とは何を意味していますか?あなたのコードのどこかで呼び出したとしても、何もしません。 – Clonkex
それはまったく何もしません、私は以前の試みで物事を遅らせようとしていました。 –
現代のWebページは、DOMロード/完了イベントの後に発生するスクリプトを使用して自分自身を構築します。一番簡単な解決策は、10000msのようにsetTimeoutにcaptureVisibleTabコードをラップすることです。 – wOxxOm