Chrome Extension Ajax & downloads【谷歌浏览器扩展之Ajax和下载】

来源:互联网 发布:手机下软件赚钱的软件 编辑:程序博客网 时间:2024/06/12 22:16

        在扩展内使用 Ajax 可引入 jQuery 库。

        下载使用 chrome.downloads API,此 API 只能在 background 中使用,content_scripts 中使用会报错。所以在 content_scripts 中获取到要下载的资源后,通过消息(chrome.runtime.sendMessage() API)发送给 background 进行下载。


使用 downloads API 需要在 manifest 文件配置 permissions :

"permissions": ["downloads","storage"],


这段是从另外的应用里摘出来的

/* 0 - (未初始化)还没有调用send()方法 1 - (载入)已调用send()方法,正在发送请求 2 - (载入完成)send()方法执行完成,已经接收到全部响应内容 3 - (交互)正在解析响应内容 4 - (完成)响应内容解析完成,可以在客户端调用了 @see https://xhr.spec.whatwg.org/ */function ajaxRequest(curhost, rurl, isFinished){var xhr = new XMLHttpRequest();xhr.onreadystatechange = function (){if(xhr.readyState == 1) {//alert( '请稍等正在刷新...' );}if (xhr.readyState == 2) {if(isFinished == 'ok'){//通知重载页面flushFinished();return '';}else{ajaxRequest(curhost, rurl, 'ok');}}};xhr.open("GET",curhost + rurl + id, true);xhr.send();}

下载调用的 API :

chrome.downloads.download({url: url,filename: filename,conflictAction: 'uniquify',saveAs: false},function(res){});

自己封装后,配合选项页使用:

//保存文件方式var _ex_save_conflict = 'overwrite';chrome.storage.local.get('_ex_favpicture_likename', function(valueArray) {if( valueArray._ex_favpicture_likename ){if( valueArray._ex_favpicture_likename == 'prompt' || valueArray._ex_favpicture_likename == 'uniquify' ){_ex_save_conflict = valueArray._ex_favpicture_likename;}}});//保存图片/*{    url: 下载文件的url,    filename: 保存的文件名,    conflictAction: 重名文件的处理方式,uniquify 括号防重,overwrite 覆盖,prompt 弹窗让用户决定    saveAs: 是否弹出另存为窗口,    method: 请求方式(POST或GET),    headers: 自定义header数组,    body: POST的数据}*/function _exSavePicture(url, filename){chrome.downloads.download({url: url,filename: filename,conflictAction: _ex_save_conflict,saveAs: false}, function(res){  });}

每次调用下载是单文件的,所以一组数据/对象 要循环调用。


阅读全文
0 0