Javascript 现代化只是为了一个快速检查?

Javascript 现代化只是为了一个快速检查?,javascript,html,placeholder,modernizr,Javascript,Html,Placeholder,Modernizr,我想检查运行我的页面的浏览器 能够处理“html 5占位符” 我知道我可以添加以下javascript检查: !Modernizr.input.placeholder 但是仅仅为了一次检查就导入一个库是否值得 还有,Modernizer是如何为我做到这一点的(我的意思是,它是如何在封面下实现的) modernizer['input']=(功能(道具){ for(变量i=0,len=props.length;i

我想检查运行我的页面的浏览器 能够处理“html 5占位符”

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

!Modernizr.input.placeholder
但是仅仅为了一次检查就导入一个库是否值得

还有,Modernizer是如何为我做到这一点的(我的意思是,它是如何在封面下实现的)

modernizer['input']=(功能(道具){
for(变量i=0,len=props.length;i
找到了以下内容:

代码:


还有一个后备解决方案,通过单击链接如果您想检查
占位符
支持,那么您所需要做的就是

var placeholderSupport = "placeholder" in document.createElement("input");
回答你的另一个问题,将整个Modernizer库包含在一行JS中是绝对没有意义的(Modernizer是1000多行……见图:)*


*是的,没有缩小,但概念仍然是

您可以从Modernizer获得所需的内容,例如,只需选择“输入属性”并生成一个构建


诚然,对于不熟悉该技巧的人来说,该来源很难理解。如果没有看到
,人们可能会挠头以前的习惯用法,但很容易理解它的要点,那就是Modernizer只是检查属性是否存在,没有其他内容。@mquander源代码有点超出我的理解范围。为什么要用两个感叹号?@lorenzo:这是一种简洁的方法,可以强制一个真实或虚假的Javascript值成为真实或虚假的值。例如,如果
props[i]
42
,那么
!道具[i]
假的
,所以
!!道具[i]
真的
@Matt:我真的不知道——如果你五分钟前问我,我会猜
中的
总是返回布尔值(但我只编写了两个月的Javascript。)假设:也许这是一种清理旧浏览器的方法,该浏览器返回了
中的
中的其他值?澄清一点,Modernizer为研究和开发目的提供了未压缩的源代码。Modernizer没有提供任何包含所有内容的缩小版。我们鼓励您创建自定义生成。因此,这不是一个单行与1000+行的比较。此外,Modernizer是一个边缘案例的存储库。例如,对input type=range的测试支持充满了危险。每次发明自定义测试都是一个很好的方法,最终会得到像UA嗅探一样脆弱的东西。人们以前用HTML5表单输入测试就已经完成了,现在他们所有的“如此简单”的检测都被破坏了。免责声明:显然,我写的是Modernizer:公平地说,在gzip之后,它有87到500字节的差异:)
function hasPlaceholderSupport() {
  var input = document.createElement('input');
  return ('placeholder' in input);
}
var placeholderSupport = "placeholder" in document.createElement("input");