输入字段占位符属性 ie7+
Posted
技术标签:
【中文标题】输入字段占位符属性 ie7+【英文标题】:input field placeholder attribute ie7+ 【发布时间】:2013-01-17 09:35:02 【问题描述】:我目前正在使用以下库:
http://widgetulous.com/placeholderjs/
并使用以下代码来检测使用的必要性/并将其应用于需要它的字段:
if navigator.userAgent.indexOf("MSIE")!= -1 or navigator.userAgent.indexOf("Trident")!= -1
$ ->
Placeholder.init()
numPlaceHolders = $('input[placeholder]').length
window.setInterval(=>
if ($('input[placeholder]').length != numPlaceHolders)
numPlaceHolders = $('input[placeholder]').length
Placeholder.init()
, 1000)
有 Interval 的原因是元素是在运行时动态生成的(我使用 Angular JS)。可惜ie支持是必须的,占位符属性不支持...
所以我有问题:
1) 如何强制 Placeholder.init() 应用于所有具有 placeholder 属性的新输入字段?有什么办法可以避免连续循环间隔?我知道 DomChange 事件(各种),但据我所知,它们在 ie 中 a) 已弃用且 b) 不受支持?
2) 有没有更好的方法来检查浏览器的兼容性,然后像我正在做的那样明确要求 ie?
【问题讨论】:
Placeholder.js 不是已经为您检测到 UA 了吗?使用 jQuery,这一切都变得容易得多。这是一个选择吗? jquery 是一个完全可以接受的选项,事实上,我相信我在上面的代码 sn-p 中确实使用了一些 jquery? 【参考方案1】:这是我解决第一个问题的方法(直接检查 ie 而不是兼容性):
替换:
if navigator.userAgent.indexOf("MSIE")!= -1 or navigator.userAgent.indexOf("Trident")!= -1
与
if typeof(document.createElement('input').placeholder) == "undefined"
仍然不知道是否有更好的方法来解决这个问题然后真的超时
【讨论】:
以上是关于输入字段占位符属性 ie7+的主要内容,如果未能解决你的问题,请参考以下文章
Modernizr.load 在 IE7/IE8 中不提供输入和文本区域占位符支持