console.log("background"); var task_manager = { } chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) { sendResponse({}); switch (request.type) { case BackgroundMsgType.CONTENT: FinishTask(sender, request.content); break; case BackgroundMsgType.ERROR: ErrorTask(sender, request.error) break; case BackgroundMsgType.GETTASK: GetTask(sender); break; case BackgroundMsgType.NOTWANT: task = task_manager[sender.tab.id]; if(task.data.waitcapture != undefined) { setTimeout(function(){ CaptureContentCurrentPage(sender.tab.id); }, task.data.waitcapture); } else { task.data.retry --; if(task.data.retry >= 0) { setTimeout(function(){ CaptureContent(task); }, 6000) } else { ErrorTask(sender, request.content); } } break; case BackgroundMsgType.CLOSETAB: delete task_manager[sender.tab.id] chrome.tabs.remove(sender.tab.id); default: break; } }); function GetTask(sender) { fetch(GetTaskUrl).then(function (response) { if (response.ok) { response.json().then(function (task) { CaptureContent(task); }) } else { console.log("error response:", response.text()) ErrorTask(sender, response.text()); } }).catch(function (reason) { console.log(reason); ErrorTask(sender, reason); }) } function CaptureContentCurrentPage(tabid) { chrome.tabs.executeScript(tabid, { runAt: "document_end", file: "background/capture.js" }); } function CaptureContent(task) { if (task.code == 200) { if(task.data.retry == undefined) { task.data.retry = 1; } chrome.tabs.create({ url: task.data.url }, function (tab) { task_manager[tab.id] = task; if (task.data.content_condition) { condition = `${task.data.content_condition}`; } else { condition = undefined; } if (condition != undefined) { chrome.tabs.executeScript(tab.id, { runAt: "document_start", code: condition }, function () { CaptureContentCurrentPage(tab.id) }); } else { CaptureContentCurrentPage(tab.id) } }); } } function FinishTask(sender, content) { var task = task_manager[sender.tab.id]; var formdata = new FormData(); formdata.append("taskid", task.data.taskid); formdata.append("content", content); delete task_manager[sender.tab.id]; chrome.tabs.remove(sender.tab.id); fetch(FinishTaskUrl, { method: "POST", body: formdata }).then(function (response) { if (response.ok) { response.json().then(function (value) { if (value.code == 200) { GetTask(sender); return } }); } }).catch(function (error) { ErrorTask(sender, error); console.log(error) return; }); } function ErrorTask(sender, error) { var task = task_manager[sender.tab.id]; var formdata = new FormData(); formdata.append("taskid", task.data.taskid); formdata.append("error", error); fetch(ErrorTaskUrl, { method: "POST", body: formdata }, function (response) { if (response.ok) { response.json().then(function (value) { if (value.code == 200) { GetTask(sender); return } }); } }).then().catch(function (error) { console.log(error) return; }); }