1

現在、次のライブラリを使用しています。

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)

間隔を設定する理由は、要素が実行時に動的に生成されるためです (私は Angular JS を使用しています)。残念ながら、サポートは必須であり、プレースホルダー属性はサポートされていません...

だから私は質問する必要があります:

1) Placeholder 属性を持つすべての新しい入力フィールドに Placeholder.init() を強制的に適用するにはどうすればよいですか? 継続的なループ間隔を回避する方法はありますか? 私は DomChange イベント (さまざま) を認識していますが、私が知る限り、それらは a) 非推奨であり、b) ie でサポートされていませんか?

2)ブラウザの互換性を確認してから、私がやっているようにieを明示的に要求するより良い方法はありますか?

4

1 に答える 1

0

最初の問題を解決した方法は次のとおりです(つまり、互換性ではなく直接チェックします):

交換:

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

 if typeof(document.createElement('input').placeholder) == "undefined"

この問題を解決するためのより良い方法があるかどうかはまだわかりませんが、本当にタイムアウトします

于 2013-02-04T18:49:56.647 に答える