如何确定浏览器是否支持超链接的数据URI
How to determine if the browser supports data URIs for hyperlinks
除了浏览器嗅探之外,还有什么方法可以确定浏览器是否支持对超链接使用数据URI?
上下文如下:
我正在创建一个链接,该链接使用方便的数据URI下载通过JavaScript生成的CSV信息文件,或者,如果浏览器不支持将数据URI用于超链接,则生成所需内容的HTML表。
现在,我的代码检查window.URL
属性的存在,它在IE9及以下版本中不存在。(这目前还可以,因为我需要支持的IE用户正在模仿IE8的兼容模式下运行。)
if(window.URL){
downloadLink.href = "data:text/csv;charset=utf-8," + encodeURIComponent(data);
downloadLink.setAttribute("download","download.csv");
}else{
downloadLink.href= "#";
downloadLink.innerHTML = "table view";
downloadLink.onclick = function(){
// build and display HTML table
return false;
};
}
然而,与较新版本的Internet Explorer(10、11以及Edge)有一些重叠之处,因为它们支持该窗口。URL对象,但不允许超链接使用数据URI。
我如何确保下载CSV的链接永远不会显示在不支持这种幻想的浏览器上?
我相信我已经找到了答案。尝试检测<a>
元素上是否存在download
属性。
var browserSupportsDataURIsForHyperlinks =
typeof document.createElement("a").download !== "undefined";
或
var browserSupportsDataURIsForHyperlinks =
"download" in document.createElement("a");
在我的例子中,我已经有了一个锚标记(downloadLink
),所以我不需要创建一个新的:
if(typeof downloadLink.download !== "undefined"){
downloadLink.href = "data:text/csv;charset=utf-8," + encodeURIComponent(data);
downloadLink.setAttribute("download","download.csv");
}else{
downloadLink.href= "#";
downloadLink.innerHTML = "table view";
downloadLink.onclick = function(){
// build and display HTML table
return false;
};
}
如果有人认为这种方法有什么问题,请告诉我。
相关文章:
- 如何在Edge中下载图像/png数据URI
- 无声声音数据uri
- Interent Explorer中的数据URI文件下载
- 追加子数据 URI,替换 IE 中的其他对象
- 将数据URI保存在cookie中,以便稍后检索
- 是否可以使用jQuery或PHP上传数据URI
- 使用数据URI提示用户保存文件
- 编辑后将大画布保存为数据URI
- Office.js将数据URI与addFileAttachmentAsync一起使用
- 正在获取跨域内容的数据URI
- 如何从 base64 数据 URI 在服务器端保存 PNG 图像
- 如何嵌入带有数据uri的大图像
- 如何使用dropzone.js收集数据URI内容
s XSS 上的数据 URI 是否可被利用
- 带有 base64 字符串(数据 URI)的 HTML 图像标记
- 如何使用数据 URI 将 MSWord 文档 (.docx) 传送到 Chrome
- 使用数据 URI 将多个文件下载到 Zip 文件中 Javascript
- 如何从 Web API 发布和获取数据 uri 图像
- 如何动态应用 base64 编码的数据 uri
- 到 Blob 的数据 URI 会损坏映像