1

onkeyup イベント中に、親ウィンドウにある Iframe から親ウィンドウにある Javascript 関数を呼び出しています。IE が不平を言い、IE8 に組み込まれているデバッガーが停止し、このコード内の「if ブロック」を強調表示して、「オブジェクトはこの種のプロパティまたはメソッドをサポートしていません」と表示します。

PS - このコードは FF で動作します。

     <td class="grid" align="left">
     <input type="text" name="invqty${topitem.itemIdentifier}-<c:out value = "1"/>"
        id="invqty${topitem.itemIdentifier}-<c:out value = "1"/>" 
        value="0" 
        onFocus="this.select()" 
        onkeyup="if(!parent.validateFloat(this.id)) { this.value = '0'; } 
                 else { parent.updateBalance(${topitem.itemIdentifier}); }">
     </td>

誰にもアイデアはありますか?

4

3 に答える 3

0

属性に無効な文字が含まれてnameいます。有効な文字について詳しくは、こちらをお読みください。

于 2012-08-03T18:05:55.953 に答える
0

わお!!!だから問題はこれだった -

iframe 内で定義していた約 5 つの関数がありました。それらはすべて、単一の「スクリプト ブロック」内で発生していました。

これらの関数の 1 つは、「for each」ループを使用していました。これらの 5 つの関数の 1 つにあるこの 1 つのループにより、IE は、これを行っていた「スクリプト ブロック」全体を無視しました。キッカーは、IE8 内のデバッガーが、問題が偽の行番号にあることを教えてくれたことで、iframe に問題があり、JS 関数をどのように定義しようとしていたかを考えさせられました。最後に、私はあきらめて行き、MAC を持っている人に Safari を使ってこれをデバッグするように頼みました。Safari デバッガーは、for each ループの正確な行を突き止めました。ループコードごとにコメントアウトすると、IEも動作し始めました!

信じられない!

IE8 Browser Debugger の開発者は、その無能さを痛烈に非難するべきです。これで3日無駄にしました。Apple をのぞいてくれてありがとう。

ここで学んだ教訓 -

Javascript を書くときは、"for each" ループを使用しないでください。Microsoft IE ブランドのデバッガーは使用しないでください。それらはひどく、あなたの時間を無駄にします。

助けてくれてありがとう、ベルギとニバス!

于 2012-08-06T16:02:19.090 に答える
0

「file://」からのように、このセットアップをローカルで実行していますか? それはうまくいきません。IE には、ローカルで実行されるファイルの iframe 通信に関する非常に厳格なセキュリティ モデルがあります。Web サーバーを介して実行する必要があります。

于 2012-08-03T18:46:49.427 に答える