Javascript “如何检测对HTML5的支持”;下载「;属性
HTML5中实现的新特性之一是锚定标记的Javascript “如何检测对HTML5的支持”;下载「;属性,javascript,html,Javascript,Html,HTML5中实现的新特性之一是锚定标记的download属性。此属性的好处在于,它为用户提供了下载在客户端应用程序中创建的内容的方法,例如图像(例如,从画布转换而来) 目前,对该功能的支持非常差,因此我想知道如何在浏览器中检测对此功能的支持。使用以下方法:创建元素,并检查属性是否已定义: var a = document.createElement('a'); if (typeof a.download != "undefined") { alert('has support'); }
download
属性。此属性的好处在于,它为用户提供了下载在客户端应用程序中创建的内容的方法,例如图像(例如,从画布转换而来)
目前,对该功能的支持非常差,因此我想知道如何在浏览器中检测对此功能的支持。使用以下方法:创建元素,并检查属性是否已定义:
var a = document.createElement('a');
if (typeof a.download != "undefined") {
alert('has support');
}
一行
if
条件使事情简化:
if (document.createElement('a').download==undefined && e.target.hasAttribute('download'))
{
e.preventDefault();
console.log('Error: this is a download link, please right-click to save the file.');
}
对
download
属性的支持不稳定(Chrome 14+、Firefox 20+、IE13+、Safari 10+,并且不支持(real)Opera。上述脚本不会干扰受支持的浏览器。或短版本var downloadAttrSupported=(“下载”在document.createElement(“a”)中)
我建议包括Modernizer本身,但如果只针对一个用例,这可能会更好。@dbaseman实际上,“未定义”是标准实现。据我所知,其他任何东西都不是,所以检查“(typeof X=='undefined')”与否是一种方法。无论如何,非常感谢您的回答!它解决了我的问题:)这个解决方案似乎不再有效;Firefox的现代版本似乎定义了a.download
,但没有使用它。@McGarnagle:使用Firefox 26中的控制台来执行document.createElement('a')。target
在我的Mac上返回一个空字符串,而不是“undefined”。我正在尝试下载一个数据URL,这样可能就不属于“同一来源”的范畴了。。。