chrome.pageCapture.saveAsMHTML为什么不能在我的Google Chrome扩展程序中运行?

ste*_*ble 2 javascript google-chrome google-chrome-extension

在我的Google Chrome扩展程序中,background.js定义了以下功能:

function submitMHTML() {
  console.log("entered submitMHTML()");
  chrome.tabs.query(
    {active: true, lastFocusedWindow: true},
    function(array_of_Tabs) {
      if (array_of_Tabs.length > 0) {
        var tab = array_of_Tabs[0];
        console.log("submitMHTML() found the active tab has an ID of " + tab.id);
        chrome.pageCapture.saveAsMHTML(
          tab.id,
          function(mhtml) {
            var xhr = new XMLHttpRequest(), formData = new FormData();  
            formData.append("mhtml", mhtml);
            formData.append("surveyID", localStorage["ID"]);
            xhr.open("POST", "http://localhost:3000/task/mhtml", true);
            xhr.setRequestHeader('Authorization', 'Token token=<redacted>');
            xhr.send(formData);
            console.log("submitMHTML() sent mhtml to server");
          }
        )
      }
    }
  );
}
Run Code Online (Sandbox Code Playgroud)

那么,为什么我在控制台中看到了这个?

entered submitMHTML()
submitMHTML() found the active tab has an ID of 450
extensions::uncaught_exception_handler:8 Error in response to tabs.query: Error: Invocation of form pageCapture.saveAsMHTML(integer, function) doesn't match definition pageCapture.saveAsMHTML(object details, function callback)
    at Object.callback (chrome-extension://nmlggmkodifcibdmpdaohpmhljbkgpdb/background.js:194:28)
    at submitMHTML (chrome-extension://nmlggmkodifcibdmpdaohpmhljbkgpdb/background.js:188:15)
    at submitResult (chrome-extension://nmlggmkodifcibdmpdaohpmhljbkgpdb/background.js:249:5)
    at HTMLButtonElement.<anonymous> (chrome-extension://nmlggmkodifcibdmpdaohpmhljbkgpdb/popup.js:25:78)
Run Code Online (Sandbox Code Playgroud)

顺便说一句,控制台日志中的行号如下所示:

  • 194: chrome.pageCapture.saveAsMHTML(
  • 188: chrome.tabs.query
  • 249 :(submitMTHML();在另一个函数内)

chrome.pageCapture.saveAsMHTML()在这里定义。该函数返回一个blob,我应该可以通过这种方式将其附加到表单。我在清单中提供了必要的权限。

Dan*_*err 6

错误说明了这一点。代替chrome.pageCapture.saveAsMHTML(tab.id, callback),使用chrome.pageCapture.saveAsMHTML({ tabId: tab.id }, callback)