JS实现网页下载[转]
function downloadById() {
var url = "http://localhost:64610/WorkProcess/ResumeDetail/7";
new FileDownloader({
url: encodeURI(url),
filename: "resume.html"
});
}
(function (e) {
"use strict";
function r(e, t, n) {
var r = function () {
n.apply(e, arguments)
};
if (e.addEventListener) {
e.addEventListener(t, r, false)
} else {
e.attachEvent("on" + t, r)
}
return r
}
function i(e, t) {
var n = arguments.length > 2 ? Array.prototype.slice.call(arguments, 1) : [];
var r;
for (var s = 0; s < n.length; s++) {
r = n[s];
for (var o in r) {
if (typeof r[o] === "object") {
e[o] = i({}, r[o])
} else if (o != null && r.hasOwnProperty(o) && typeof r[o] !== "undefined") {
e[o] = r[o]
}
}
}
return e
}
function s(t, n) {
var r = document.createElementNS("http://www.w3.org/1999/xhtml", "a");
r.download = t;
r.href = URL.createObjectURL(n);
var i = document.createEvent("MouseEvents");
i.initMouseEvent("click", true, true, e, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
r.dispatchEvent(i)
}
function o(e, t, n) {
var r;
t = t || "GET";
if (window.XMLHttpRequest) {
r = new XMLHttpRequest
} else {
r = new ActiveXObject("Microsoft.XMLHTTP")
}
r.open(t, e, true);
r.responseType = "blob";
r.onreadystatechange = function () {
if (r.readyState == r.DONE) {
if (n) n.call(r, r.response)
}
};
r.send();
return r
}
var t = {
url: "",
filename: "",
type: "GET",
progress: function () { },
done: function () { }
};
var n = function (e) {
function h(e) {
var t = e.total;
var r = e.loaded;
var i = r / t;
var s = (new Date).getTime();
var o = (s - l) / 1e3;
var u = r - c;
var a = u / o;
c = r;
l = s;
e.per = i;
e.speed = a;
n.progress.call(f, e)
}
function p(e) {
var t = n.done();
if (typeof t === "boolean" && !t) return t;
s(a, e)
}
var n = i({}, t, e);
var u = n.url;
var a = n.filename;
var f = o(u, n.type, p);
var l = (new Date).getTime();
var c = 0;
r(f, "progress", h)
};
e.FileDownloader = n
})(window)
//---------------------------------------------------------------------------
最新文章
- 通过RTMP play分析FLV格式详解
- javaScript条件控制语句
- webpack打包压缩工具的使用方法
- ViewPager
- 前端技术Bootstrap的hello world
- python内置模块(3)
- More Effective C++ (1)
- 表视图控制器(TableViewController)(三) 、 表视图搜索
- C# IL DASM 使用
- [转] c#多线程(UI线程,控件显示更新) Invoke和BeginInvoke 区别
- Qt5官方demo解析集21——Extending QML - Adding Types Example
- 命令行替代工具 - Cmder配置
- TensorFlow - 在 windows 系统上安装
- [转]angular2: including thirdparty js scripts in component
- nginx + iis 使用介绍
- VM装mac10.9教程+报错信息解决办法
- 微软BI 之SSIS 系列 - 通过 ROW_NUMBER 或 Script Component 为数据流输出添加行号的方法
- 解决vmvare关闭过慢
- objc与鸭子对象(上)
- MSG命令使用详解
热门文章
- [转载]Jquery Form插件表单参数
- Objective-C 协议(protocol)
- hdu 2028 Lowest Common Multiple Plus(最小公倍数)
- ThinkPHP下隐藏index.php以及URL伪静态
- 每个QWidget都有contentsMargins函数,善用QMargins
- Android:控件布局(线性布局)LinearLayout
- BIRT使用1:简介、概念、元素、报表设计器组成
- android开发无障碍app
- android SharedPreferences 使用
- C#.Net 如何动态加载与卸载程序集(.dll或者.exe)0-------通过应用程序域AppDomain加载和卸载程序集