如果页面上要实现一个点击下载的功能,传统做法是使用一个 a 标签,然后将该标签的 href 属性地址指向下载文件在服务端的地址(相对地址或者绝对地址),比如这样:
能这样实现是因为,在浏览器地址栏输入一个文件地址,如果该文件能在浏览器上打开,那么就直接打开,比如 html 文件,jpg文件等;但是如果该文件不能在浏览器上打开,就会变为下载。
但是有时候这样做会显得有点复杂。比如说我在一个移动端页面定义了一个 app 的下载按钮,显然下载地址会根据机器系统(Android 或者 ios)需要判断,这样就要在 javascript 重置 a 标签的 href 属性。我们十分想要一个 download 函数,能够监听任何 dom 元素,然后完成下载操作,而不仅仅是 a 标签,答案是有的,location.href 可以做到。
的确,既然 a 标签打开一个文件能实现下载功能,那么用 location.href 就也能做到了。
if (isIphone) {
location.href = '..';
} else {
location.href = '..';
}
这样,html 端就清净多了。