小编gua*_*ari的帖子

获取JQuery ajax请求进展的最简洁方法是什么?

在普通的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文档中找到任何有用的东西......

javascript ajax jquery xmlhttprequest

90
推荐指数
4
解决办法
10万
查看次数

创建一个选项卡并在其中注入content-script会产生权限错误

在我的Chrome扩展程序的后台页面中,我需要执行以下操作:

  1. 创建一个带有html页面的选项卡,该页面位于我的扩展文件夹中或由后台页面动态生成 ;
  2. 加载新选项卡后,在其中注入内容脚本以使用消息传递;
  3. 注入脚本后,使用一些数据向新选项卡发送消息.

这总是变成错误:
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)

google-chrome-extension content-script

7
推荐指数
1
解决办法
4186
查看次数

如何使用Javascript下载,压缩和保存多个文件并取得进展?

我正在创建一个Chrome扩展程序,需要从网站下载多个文件(图像和/或视频).这些文件可能有很大的大小,所以我想向用户显示下载进度.经过一些研究,我发现目前可能的解决方案可能是:

  1. 使用XMLHttpRequests下载所有文件.
  2. 下载后,使用JavaScript库将所有文件压缩到一个存档中(例如JSZip.js,zip.js).
  3. 提示用户使用"另存为"对话框保存zip.

我被困在第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)

javascript zip download save-as google-chrome-extension

5
推荐指数
2
解决办法
2万
查看次数