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

        在扩展内使用 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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值