Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “如何检测对HTML5的支持”;下载「;属性_Javascript_Html - Fatal编程技术网

Javascript “如何检测对HTML5的支持”;下载「;属性

Javascript “如何检测对HTML5的支持”;下载「;属性,javascript,html,Javascript,Html,HTML5中实现的新特性之一是锚定标记的download属性。此属性的好处在于,它为用户提供了下载在客户端应用程序中创建的内容的方法,例如图像(例如,从画布转换而来) 目前,对该功能的支持非常差,因此我想知道如何在浏览器中检测对此功能的支持。使用以下方法:创建元素,并检查属性是否已定义: var a = document.createElement('a'); if (typeof a.download != "undefined") { alert('has support'); }

HTML5中实现的新特性之一是锚定标记的
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,这样可能就不属于“同一来源”的范畴了。。。