在这样一个简单的情况下,您可以直接执行操作,而无需涉及 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
属性,使其显示为初始内容。
代码在聚焦时清除该字段。这听起来比单击时清除它要好,因为用户在输入部分数据后可能出于多种原因单击该字段。
PS 为了可用性、可访问性和简单性,最好为每个输入字段使用可见标签,而不是使用占位符。所以这不是一个好的用例。但是同样的技术也可以用在一个非常简单的搜索表单中,站点通常作为站点导航系统的一部分。在那里,将表单压缩到非常小的尺寸,省略标签是有意义的。