Когда я могу вызвать revokeObjectURL в расширении Chrome с фоновыми сценариями и сценариями содержимого?

Я загружаю файлы из локальной файловой системы с помощью XMLHttpRequest. Я следую предложению, сделанному в этом SO-вопросе - передать большой двоичный объект или файл из расширения Chrome

Это запускается в фоновом скрипте со следующим кодом

function uploadLocalFilesAndSend(msg){
var xhr = [], i;
var x = 0;
var filePaths = msg.UploadDocumentFileInfoList;
for (i = 0; i < filePaths.length; i++){
    (function(i){
        xhr[i] = new XMLHttpRequest();
        var url = 'File:///' + filePaths[i].FilePath;
        console.log('uploadLocalFilesAndSend - URL being used: ' + url);
        xhr[i].open('GET', url, true);
        xhr[i].responseType = 'blob';
        xhr[i].onload = function() {
            x += 1;
            var newURL = URL.createObjectURL(xhr[i].response);
                console.log('uploadLocalFilesAndSend - newURL: ' + newURL);
                msg.UploadDocumentFileInfoList[i].PathURL = newURL;
                if (x == filePaths.length) {
                    chrome.tabs.sendMessage(ipasTabID, msg);
                }
        };
        xhr[i].send();
    })(i);
}
}

По мере загрузки каждого файла createObjectURL используется для создания нового объекта URL. Затем эти URL-адреса передаются в сценарий содержимого в виде сообщения. Сценарий содержимого почти идентичен вызову createObjectURL снова в файле, который создает новый URL. Затем эти URL-адреса отправляются на веб-страницу, где они затем используются для получения соответствующих файлов.

Каждый раз, когда это делается, я фактически создаю набор объектов URL в фоновом сценарии, а затем новый набор в сценарии содержимого.

Когда мне следует вызывать revokeObjectURL?

Я думал, что для объектов URL, созданных в фоновом сценарии, я могу вызвать revokeObjectURL только после того, как сценарий содержимого получит файл и создаст новые объекты URL, я прав? Во-вторых, я не могу вызывать revokeObjectURL для URL-адресов, созданных в сценарии содержимого, пока файлы не будут безопасно загружены на веб-страницу.

Если я прав, могу ли я вызвать revokeObjectURL для URL-адреса, созданного фоновым скриптом в скрипте контента?

0 ответов

Другие вопросы по тегам