3

これは多くの人が遭遇した問題のようです!グーグル検索結果へのリンク

たくさんの答えがあります、私はより合理的なもののいくつかを調べて、ページ上のjavascriptエラーを修正しました。Chromeではエラーを検出していませんが、IE8では205行目のエラーで無効な引数が表示され、状態のドロップダウンが表示されません。私はJavaScriptの専門家ではないので、この問題のトラブルシューティングをどこから始めればよいのかわかりません。特にブラウザの詳細に関しては。

問題のスクリーンショット

JSの行205を見ると、次のような欠落しているフィールドがあります。

if (this.regionSelectEl.options.add) {
        this.regionSelectEl.options.add(option);
} else {
        this.regionSelectEl.appendChild(option);
}

これはたまたまページから欠落しているregion(state)select要素です。JSへのリンク:http: //jsfiddle.net/bms85/LKdsq/1/

これを引き起こしているのは何ですか?

編集:

原因は、最新バージョンのモダナイザーを取り除いたものとの競合であることがわかりました。html5ポリフィルにモダナイザーを使用しています。まだ競合をデバッグしようとしています。

4

4 に答える 4

3

私はMagento/Modernizrサイトでもこの問題に遭遇していましたが、 BrendanFalkowlskiの回答が解決策を示していました。彼の回答以来、Modernizrはhtml5shivを3.6に更新する2.6.xをリリースしました。これには、特定の問題の修正が含まれています。したがって、これに遭遇し、2.6より前のmodernizrを使用している場合は、最新に更新すると(バンドルされているhtml5shivを使用して)、問題が修正されるはずです。

于 2012-10-17T14:35:07.580 に答える
1

クロスブラウザと互換性を持たせるには、次のことを行う必要があります

this.regionSelectEl.options[this.regionSelectEl.options.length] = new Option(option.text, option.value);
于 2012-06-18T15:57:04.250 に答える
1

Magentoのforms.jsは、IE8のModernizr(HTML5shivが含まれている場合)と競合します(おそらくそれよりも低い—テストしませんでした)。フォーム検証のあるページにはエラーメッセージが表示されます。

修正:

Modernizr内にHTML5shivをロードする代わりに、https ://github.com/aFarkas/html5shivからhtml5shiv.jsを個別にダウンロードします。

このレイアウトXMLを使用して、IE8以下にのみshivを提供する条件付きコメントを追加します。

<action method="addItem"><type>skin_js</type><name>js/html5shiv.js</name><params/><if>lte IE 8</if></action>

次に、カスタムのModernizrパッケージを作成し、それを含めることができます。すべてのブラウザがModernizrスクリプトを取得するため、これには、最新のブラウザのスクリプトを軽量化するという優れた副作用があります。

注:これにより、IE8ユーザーに追加のスクリプトのダウンロードを強制することで余分な負担がかかりますが、エラーを表示させるよりはましです。

于 2012-07-14T19:38:34.550 に答える
0

結局のところ、IEはoptions.addが好きではありません。

            if (this.regionSelectEl.options.add) {
                this.regionSelectEl.options.add(option);
            } else {
                this.regionSelectEl.appendChild(option);
            }

代わりにappendClildを使用しました。

            if (this.regionSelectEl.options.length > 0 && option.value.length > 0 && option.text.length > 0 && this.regionSelectEl.options.add) {
                //~ this.regionSelectEl.options.add(option);
                this.regionSelectEl.appendChild(option);
            } else {
                this.regionSelectEl.appendChild(option);
            }
于 2012-04-28T14:04:15.760 に答える