迅雷下载触发
作者:Yuan Tang
更新于:5 个月前
字数统计:394 字
阅读时长:1 分钟
实现
现在有一份超链接代码如下:
html
<body>
<a href="https://xxxxxxxxxxxx">点我下载</a>
</body>
点击即可下载。前端想要实现迅雷下载,可按照以下思路实现:
- 为超链接
a
标签添加自定义标识data-thunder
,表示该超链接需要迅雷下载 - 获取所有需要迅雷下载的超链接,
for...of...
循环 - 通过
btoa
把链接转base64
- 转迅雷下载的
thunder
协议
代码如下:
html
<body>
<a href="https://xxxxxxxxxxxx">点我下载</a>
<script>
const links = document.querySelectorAll('a[data-thunder]')
for(const link of links) {
const newHref = btoa(`AA${link.href}ZZ`)
// 转迅雷下载的 `thunder` 协议
link.href = `thunder://${newHref}`
}
</script>
</body>
注意 示例代码中使用了
JavaScript
内置的btoa()
函数来进行Base64
编码。如果你需要在Node.js
环境下运行这个函数,你需要使用Buffer.from()
函数来进行Base64
编码。
拓展:btoa()
btoa()
方法可以将一个二进制字符串(例如,将字符串中的每一个字节都视为一个二进制数据字节)编码为 编码的 ASCII 字符串。https://developer.mozilla.org/zh-CN/docs/Glossary/Base64
你可以使用这个方法来对可能遇到通信问题的数据进行编码,然后使用 方法来对数据进行解码。例如,你可以对 ASCII 中的控制字符(值为 0 到 31 的字符)进行编码。https://developer.mozilla.org/zh-CN/docs/Web/API/atob
- 语法:
btoa(stringToEncode)
- 参数:
stringToEncode
一个需要编码的二进制字符串。 - 返回值: 一个包含
stringToEncode
的 Base64 表示的 ASCII 字符串。