2011-11-04 65 views
10

我要检查,如果谁在经营我 网页浏览器能够处理的“HTML 5占位符”Modernizr只是一个快速检查?

我知道我可以添加以下JavaScript检查:

!Modernizr.input.placeholder 

但它是值得只为一张支票导入一个图书馆?

也modernizr如何做到这一点对我来说(我的意思是如何实现在封面下)?

回答

10

如果你想检查placeholder支持,然后你需要做的是;

var placeholderSupport = "placeholder" in document.createElement("input"); 

并回答你的其他问题; 没有,绝对不会有一点,包括整个的Modernizr库1号线的JS(Modernizr的是1000+线....转到数字:))*

*是不是精缩,但概念仍然

+11

澄清的一点是,Modernizr为研究和开发提供了未压缩的来源。 Modernizr没有提供其中的一切缩小版本。鼓励您创建自定义构建。所以它不是一个线上比较1000+班轮比较。 –

+9

此外Modernizr是边缘情况的存储库。例如,对输入类型=范围的测试支持充满了危险。每次发明自定义测试都是一种结束与UA嗅探一样脆弱的好方法。人们之前使用HTML5表单输入测试完成了它们,现在所有的“简单”检测都被破坏了。免责声明:我写Modernizr,显然。 :p –

+3

为了公平起见,在gzip之后,它有87到500个字节的区别:) –

3

It's open-source. Go read it.

Modernizr['input'] = (function(props) { 
    for (var i = 0, len = props.length; i < len; i++) { 
    attrs[ props[i] ] = !!(props[i] in inputElem); 
    } 
    return attrs; 
})(('autocomplete autofocus list placeholder max min ' + 
    'multiple pattern required step').split(' ')); 
+2

诚然,这源是很难理解对于那些不熟悉这个技巧的人来说。 – SLaks

+0

如果以前没有见过'!!'成语,人们可能会搔头,但很容易就能得出它的要点,这就是modernizr只是在检查该属性是否存在,而不是进一步检查。 – mquander

+1

@mquander该源代码稍微超出了我。为什么这两个感叹号? – Zo72

1

发现这一点:http://davidwalsh.name/html5-placeholder

代码:

function hasPlaceholderSupport() { 
    var input = document.createElement('input'); 
    return ('placeholder' in input); 
} 

还有一个备用的解决方案,通过点击链接