2016-12-10 4 views
0

アイアンフォームを使用しようとしていますが、Chromeのフォームの非ネイティブエレメントにアクセスできません。クロムの鉄フォームの問題

<dom-module id="e404-view"> 
    <template> 
     <style> 
      :host { 
       display: block; 

       padding: 10px 20px; 
      } 

     </style> 

     <form id="step1Form" is="iron-form"> 
      <input> 
      <paper-input></paper-input> 
     </form> 

     You hit a 404. <a href="/home">Head back to home</a> 
    </template> 

    <script> 
     Polymer({ 
      is: 'e404-view', 

      ready: function() { 
       var form = this.$.step1Form; 
//    console.log(form.elements); 
       for (var el, i = 0; el = form.elements[i], i < form.elements.length; i++) { 
        console.log(el); 
       } 
      } 
     }); 
    </script> 
</dom-module> 

ここでは、フォームが含まれている簡単な図です。 Chromeのform.elementsを繰り返し処理すると、配列内に入力が1つしかありません。しかし、この例はFirefox上で完璧に動作します。

私はアプリケーションを構築しています。私は別のプロジェクトで同じビューを使用するとすべてうまく動作します。私は、アプリに何か衝突があるか、そういうものがあると思う。このビューはアプリ内のアイアンページを介して表示されます。しかし、私はそれがFirefox上で動作する理由はわかりません。

私は何が間違っているのか分かりませんし、アドバイスやヒントをいただければ幸いです。バグを解決できない場合は、おそらくフォームを削除して、自分で検証を処理します。

ありがとうございます。Jan

+2

それは私のChromeで動作します:[http://jsbin.com/bilirozito/1/edit?html,console,output](http://jsbin.com/bilirozito/1/edit?html,console、出力)。 – alesc

+0

問題は、それが私のアプリの範囲で動作しないということです。私は輸入が大丈夫だと確信しています。どのような矛盾が行動を引き起こす可能性があるかについてのアドバイスは高く評価されます。奇妙なことは、Firefoxで正常に動作することです。私はコード全体にアクセスできなければ何が間違っているのかを知ることは難しいと知っていますが、私は一般的なアドバイスだけを探しています。ありがとう –

+0

あなたのアプリでは、 'ready'要素の' elements'も読んでいますか?あるいは、他の時に変数を読んでいますか?もしそうなら、 'attached'と' detached'を見て、どんなDOM要素参照も再作成してください。 – alesc

答えて

1

解決策が見つかりました。この問題は、index.htmlにあるグローバルなポリマー設定によって引き起こされました。私は、DOMをコメントアウト

window.Polymer = { 
     dom: 'shadow', 
     lazyRegister: true 
    }; 

: '影' の設定は、すべてが働き始めた

はここでは問題の部分です。