IEでの不思議なjQueryエラー:メソッドまたはプロパティへの予期しない呼び出し

いつものように、Firefox、Chrome、Safari、Operaでは問題なく動作します。しかし、IE ...これは別の話です:)

Here is my full code: http://pastebin.com/ZdzzFayJ

少なくとも1つのIEで良いことは、次のエラーで私に来る:

SCRIPT65535: Unexpected call to method or property access. 
jquery.min.js, line 3 character 29586

なにが問題ですか?私はバグを見つけることができません:(


更新

私は自分のコードを整理しました.JavaScript関数はjQueryプラグインとして呼ばれています。私はまだエラーが出ていますが、今どこにいるのか分かります。

私のコードでは、IEがエラーメッセージを警告するコードの隣に IE ERROR というコメントを付けました。

PLUGINS: http://pastebin.com/6Dnd1qtd

jQuery : http://pastebin.com/wiHALjZx

私はなぜIEがそこに壊れているのか分かりません。


よろしく、マリオ

3
これらの関数を単独でテストし、どの関数が問題を引き起こしているかを判断する必要があります。多分私たちは誤った行を特定することができます。私たちにスカベンジャーの狩りをすべてのコードを通じて遂行するように頼むことは良い考えではありません。
追加された 著者 lsuarez,

3 答え

私にとっては問題は次のとおりでした:

私はすべての環境に適用されるlibを使用します。

my_lib.js

jQuery.ajax({
        data : jQuery('form').serialize(),
        url : '/'+action[1]+'/post_form',
        type : 'POST',
        dataType: 'json',
        success: function(data){
            $('#my_name_id').find('option').remove().end().append(data.select_options);

});

Jsonは次を返します。

select_options  ""

すべて順調!しかし、1つの形式で#my_name_idは選択ではなく、非表示のフィールドです。これは、ユーザーに対して事前に選択された値と無効な属性です。

IE8のjqueryがエラーを取得する理由です。

解決策は次のとおりです。

my_lib.js

jQuery.ajax({
        data : jQuery('form').serialize(),
        url : '/'+action[1]+'/post_form',
        type : 'POST',
        dataType: 'json',
        success: function(data){
          if( $('#my_name_id').is('select') ) {
             $('#my_name_id').find('option').remove().end().append(data.select_options);
          }
});

誰かを助けることを願っています!

3
追加された

echo_data(data)の後にget_data関数にセミコロンがないようです。

request.done(function(data) {
    if (data) echo_data(data) _loading.hide();
    _ads_listing.unmask();
});
2
追加された
返信いただきありがとうございますが、私はまだ同じエラーが発生しています。変更されたコードは次のとおりです: pastebin.com/WqE3QyTg ご協力ありがとうございました..
追加された 著者 Puzo,
@lthibodeaux私は最初の投稿を更新しました..それを確認してください。私はまだエラーが発生します..ありがとう。
追加された 著者 Puzo,
単にInternet Explorerのデバッガが非常に厳格であることを追加したいのですが、セミコロン、後続のコンマなどが固定されていることを確認する必要があります。そうしないとIEがエラーをスローします。
追加された 著者 David Nguyen,

私は次のように問題を解決しました:

  • コードを整理してください( JSHint が非常に役に立ちました)。
  • IEに "// html5shiv.googlecode.com/svn/trunk/html5.js" を追加する前に、セクション、ヘッダーなどのHTML5タグを使用していることを認識しました。/li>
  • jQueryプラグインでは、要素をhtmlコンテンツで埋めます。 defaultOpts.data_container.html( "HTML CONTENT")を使用する代わりに、 $(defaultOpts.data_container).html( "HTML CONTENT")そこで、要素ID "#ID" だけでなく、オブジェクト要素 $(#ID)をプラグインにパラメータとして送ります。

今、すべて正常に動作します。皆様のご支援とご協力をいただき、ありがとうございます。

2
追加された
私は実際には、スクリプトタグに "text/javascript"という型を追加すると助けになることが判明しましたが、IE8
追加された 著者 Jana,
jQuery addOption()を呼び出すときに同様のエラーが発生しましたが、html5shiv v3.4は実際には問題でした。
追加された 著者 Webveloper,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com

JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript