【发布时间】:2011-12-22 01:07:10
【问题描述】:
我想检查运行我页面的浏览器是否 能够处理'html 5占位符'
我知道我可以添加以下 javascript 检查:
!Modernizr.input.placeholder
但是为了一次检查而导入一个库是否值得?
modernizr 如何为我做到这一点(我的意思是它是如何在幕后实现的)?
【问题讨论】:
标签: javascript html placeholder modernizr
我想检查运行我页面的浏览器是否 能够处理'html 5占位符'
我知道我可以添加以下 javascript 检查:
!Modernizr.input.placeholder
但是为了一次检查而导入一个库是否值得?
modernizr 如何为我做到这一点(我的意思是它是如何在幕后实现的)?
【问题讨论】:
标签: javascript html placeholder modernizr
如果您想检查placeholder 支持,那么您需要做的就是;
var placeholderSupport = "placeholder" in document.createElement("input");
并回答您的其他问题; 不,包含 1 行 JS 的整个 Modernizr 库绝对没有意义(Modernizr 是 1000 多行......看图 :))*
*是的,没有缩小,但概念仍然存在
【讨论】:
例如,您只需选择“输入属性”即可从modernizr 中获取所需的内容并生成构建
【讨论】:
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(' '));
【讨论】:
!! 成语,你可能会摸不着头脑,但很容易理解它的要点,即modernizr 只是检查属性是否存在并且没有别的了。
props[i] 是42,那么!props[i] 是false,所以!!props[i] 是true。
in 总是返回一个布尔值(但我只为两个人编写了 Javascript个月。)假设:也许这是在某些旧浏览器从in返回其他值之后进行清理的一种方式?
找到这个:http://davidwalsh.name/html5-placeholder
代码:
function hasPlaceholderSupport() {
var input = document.createElement('input');
return ('placeholder' in input);
}
还有一个备用解决方案,点击链接
【讨论】: