Javascript 输入字段占位符属性ie7+;

Javascript 输入字段占位符属性ie7+;,javascript,internet-explorer,coffeescript,placeholder,browser-detection,Javascript,Internet Explorer,Coffeescript,Placeholder,Browser Detection,我目前正在使用以下库: 并使用以下代码检测使用的必要性/并将其应用于需要的领域: if navigator.userAgent.indexOf("MSIE")!= -1 or navigator.userAgent.indexOf("Trident")!= -1 $ -> Placeholder.init() numPlaceHolders = $('input[placeholder]').length window.setInter

我目前正在使用以下库:

并使用以下代码检测使用的必要性/并将其应用于需要的领域:

 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)
设置间隔的原因是元素是在运行时动态生成的(我使用Angular JS)。不幸的是,ie支持是必须的,并且占位符属性不受支持

因此,我必须回答以下问题:

1) 如何强制占位符.init()应用于所有具有占位符属性的新输入字段?有没有办法避免连续循环间隔?我知道DomChange事件(各种各样),但据我所知,它们是a)不推荐的,b)在ie中不受支持的


2) 有没有更好的方法来检查浏览器的兼容性,而不是像我这样明确要求ie?

以下是我如何解决第一个问题的(直接检查ie而不是兼容性):

替换:

 if navigator.userAgent.indexOf("MSIE")!= -1 or navigator.userAgent.indexOf("Trident")!= -1


仍然不知道是否有更好的方法来解决这个问题,那么超时真的

Placeholder.js是否已经为您检测到UA了?使用jQuery,所有这些都变得容易多了。这是一个选项吗?jquery是一个完全可以接受的选项,事实上,我相信我在上面的代码片段中使用了一些jquery?
 if typeof(document.createElement('input').placeholder) == "undefined"