在普通的javascript中非常简单:只需将回调附加到 {XMLHTTPRequest}.onprogress
var xhr = new XMLHttpRequest();
xhr.onprogress = function(e){
if (e.lengthComputable)
var percent = (e.loaded / e.total) * 100;
};
xhr.open('GET', 'http://www...', true);
xhr.onreadystatechange = function() {
...
};
xhr.send(null);
Run Code Online (Sandbox Code Playgroud)
但我正在做一个用JQuery($.get()或$.ajax())下载html数据的ajax网站,我想知道哪个是获取请求进度的最佳方式,以便用一点进度条显示它,但奇怪的是,我不是在JQuery文档中找到任何有用的东西......
在我的Chrome扩展程序的后台页面中,我需要执行以下操作:
这总是变成错误:
tabs.executeScript:无法访问url""的内容.扩展清单必须请求访问此主机的权限.
或者,如果页面或脚本存储在我的扩展文件夹中的.html和.js专用文件中:
tabs.executeScript:无法访问URL"chrome-extension://ehdjfh.../page.html"的内容.扩展清单必须请求访问此主机的权限.
chrome.tabs.executeScript()执行时会生成错误,并阻止内容脚本注入.(我需要这个结构将一些大数据传递给选项卡,如果直接作为字符串传递给编码的html网址,它将被截断)
以下是一个代码示例,可用于测试行为扩展中的行为,只需在Chrome中复制粘贴并加载扩展程序:
background.js
chrome.browserAction.onClicked.addListener(function() {
var getSampleHTML = function() {
return 'javascript:\'<!doctype html><html>' +
'<head></head>' +
'<body>' +
'<p id="myId">page created...</p>' +
'</body>' +
'</html>\'';
};
// create a new tab with an html page that resides in extension domain:
chrome.tabs.create({'url': getSampleHTML(), 'active': false}, function(tab){
var getSampleScript = function() {
return 'chrome.extension.onRequest.addListener(' +
'function(request, sender, sendResponse) {' +
'if(request.action == "print_data" && sender.tab.id == ' + tab.id + '){' …Run Code Online (Sandbox Code Playgroud) 我正在创建一个Chrome扩展程序,需要从网站下载多个文件(图像和/或视频).这些文件可能有很大的大小,所以我想向用户显示下载进度.经过一些研究,我发现目前可能的解决方案可能是:
我被困在第2段),如何压缩下载的文件?
要理解,这是一个代码示例:
var fileURLs = ['http://www.test.com/img.jpg',...];
var zip = new JSZip();
var count = 0;
for (var i = 0; i < fileURLs.length; i++){
var xhr = new XMLHttpRequest();
xhr.onprogress = calculateAndUpdateProgress;
xhr.open('GET', fileURLs[i], true);
xhr.responseType = "blob";
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
var blob_url = URL.createObjectURL(response);
// add downloaded file to zip:
var fileName = fileURLs[count].substring(fileURLs[count].lastIndexOf('/')+1);
zip.file(fileName, blob_url); // <- here's one problem
count++;
if (count == fileURLs.length){
// all …Run Code Online (Sandbox Code Playgroud)