css - 有什么方法可以检测浏览器中的 html 功能可用性

标签 css html modernizr

如果以下 html5 或 css 3 功能在浏览器上可用,是否有任何方法可以在 javascript 中进行检测。

例如,我有一个属性:占位符,

<input type="text" placeholder="type your email address" />

我设置了一个 javascript 函数,如果浏览器不支持占位符属性,它将设置一个手动占位符


如果我使用 Modernizr,会这样吗:

if ( Modernizr.testProp('placeholder') )
// add attribute placeholder
else
// assign a keypress event as placefolder

最佳答案

在像这样的简单情况下,您可以直接执行操作而无需涉及 Modernizr:

<input type="text" placeholder="type your email address" 
  id="email">
<script>    
var email = document.getElementById('email');
if(!('placeholder' in email)) {
  email.value = email.getAttribute('placeholder');
  email.onfocus = function () { this.value = ''; };
}
</script>

在这种方法中,placeholder 属性出现在静态 HTML 标记中。不受支持时不会造成伤害;事实上,即使不受支持,它也很有用。

要点是,当支持 placeholder 时,元素节点存在具有该名称的属性。即使不支持,浏览器也会解析并存储它,这样你就可以通过 getAttribute() 获取它并将值赋给 value 属性,使它显示为初始内容。

代码在获得焦点时清除该字段。这听起来比点击时清除它要好,因为用户可能会在输入部分数据后出于多种原因点击该字段。

附言为了可用性、可访问性和简单性,最好为每个输入字段使用可见标签,而不是使用占位符。所以这不是一个好的用例。但是可以使用相同的技术,例如一个非常简单的搜索表单,网站通常将其作为网站导航系统的一部分;将表单压缩到非常小的尺寸并省略标签是有意义的。

关于css - 有什么方法可以检测浏览器中的 html 功能可用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10531862/

相关文章:

jquery - 滞后悬停 jQuery

php - 垂直对齐 css 元素更靠近图像

jQuery Mobile - 将页面分成 4 个部分

html - 空的 [if IE] 会提高网站性能吗?

javascript - 页面顶部生成额外的空白?

html - 如何使按钮标签展开?

javascript - 在 JavaScript 检测到其中一些图像是否丢失之前,等待所有图像加载为 HTML 错误

javascript - 如何在 Javascript 中显示悬停类?

css - 如何使用 Modernizr 测试第 n 个 child ?

javascript - 当我在 Node JS 中调用 Modernizr.build 时,范围行为非常不寻常