javascript - 在 iPhone 浏览器上下载 VCF 文件
问题描述
我正在尝试在我的移动网络应用程序中下载一个 vcf 文件,而无需访问服务器。
function downloadVcf(filename, data) {
var element = document.createElement('a');
element.setAttribute('href', 'data:text/x-vcard;charset=utf-8,' + encodeURIComponent(data));
element.setAttribute('download', filename);
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}
上面的代码在使用 windows 操作系统的 chrome 浏览器上调试时效果很好。它在安卓手机上的 chrome 浏览器上也能正常工作。但它不适用于 iPhone 浏览器 (safari)。它不是下载 vcf 文件,而是在浏览器中打开 VCF 文件。但它确实可以让用户选择将其导入其他应用程序(例如联系人)。但我想要的是在用户的 iPhone 中下载 VCF 文件。
请帮忙。
解决方案
设置document.location.href
为您的数据 URI 的值应该可以工作:
function downloadVcf(data) {
// build data url
var url = 'data:text/x-vcard;charset=utf-8,' + encodeURIComponent(data);
// ask the browser to download it
document.location.href = url;
}
推荐阅读
- c - 在 C 语言中 *p=vec[n] 和 p=&vec[n] 一样吗?
- java - PDFBox 找不到 cid 键控字体的正确后备字体
- angular - 角度动画错开动态延迟
- css - Rails - 在 application.rb 中添加了 4 个自定义资产路径,无需重新启动
- java - 处理 Objects.requireNonNull() 抛出的 NullPointerException 的最佳方法是什么?
- sql - 数据集 SQL Server 中不同 ID 的计数
- python - 从大熊猫数据框中选择条目很慢
- spring-boot - JSON 正文超出最大文档大小
- sql - 进行内部查询以删除重复的代码
- python - Word_tokenize,如何只打印第一个令牌