2

jquery 1.4.4と1.5.1でテストし、両方で問題を確認しました

jquery + rails ujsドライバー(githubから)+ google Maps v3を使用している場合、マップマーカーをクリックすると、IEエラー「Fail」が発生します。完全なCDNホストのjqueryv1.5.1を使用する場合、IEデバッガーは2838行目を指します(この問題はjquery.min.jsまたはバージョン1.4.4でも発生することに注意してください)。

このエラーをトリガーするのはujsドライバーであることを確認しました。ドライバが削除されたときに、マーカーをクリックしてもエラーは発生しません。

簡単なライブの例は、http://avioing.com/maps/marker-simple.htmlから入手できます。このページは、Googleのサンプルページhttp://code.google.com/apis/maps/documentation/javascript/examples/marker-simple.htmlの正確なコピーです。jqueryと最新のujsドライバーをロードするためのスクリプト呼び出しのみを追加しました。マップマーカーをクリックすると、エラーを再現できるはずです。

サンプルページはFFとChromeで正常に機能し、エラーはIEでのみ発生します

http://avioing.com/maps/marker-simple_no_ujs.htmlおよび http://avioing.com/maps/marker-simple_no_marker.htmlも参照 してください。どちらも、この問題は発生しません。

誰かが回避策を知っていますか?

4

2 に答える 2

2

この問題は、IEとVMLに関する同様の問題を思い出させます。http: //bugs.jquery.com/ticket/7071ここで、IEが要素に遭遇し、その要素の属性(elem.type jQueryコードでは)失敗し、その要素へのそれ以上のアクセス試行は成功しません。

編集:あなたの問題のために回避します:

あなたが引用した行は次のとおりです:jquery1.5.1の2838

var elem = e.target,
    type = elem.type;

次のようなものでエラーをトラップする必要があります:(jqueryソースをハックする)

    var testType = 'unknown';
    try { testType = elem.type; } catch (e) { /* kill IE exceptions on unknown type nodes */ }
    if (testType !== 'unknown') { 
    var elem = e.target,
        type = elem.type;
};

警告:同様の問題が発生する可能性があるため、十分にテストしてください。

明確にするために、これはこれを行うための最も効率的/最良の方法ではありませんが、これを回避するためにあなた/私が何をしているのかを明らかにします。

于 2011-03-07T17:03:46.217 に答える
2

@Markは私を正しい方向に向け、解決策を見つけました。

これはhttp://bugs.jquery.com/ticket/7071で報告されている既知の問題であり、jqueryチームの人々による解決策があります。jquery 1.4.4バグ修正ブランチにパッチがあります(https://github.com/jquery/jquery/pull/13の説明を参照)が、1.4.4アップデートまたは1.5.1アップデート。

私が見ることができるものから、置き換える必要があるjquery(src / events.js)の「varelem = e.target、type=elem.type」の4つのインスタンスがあります。ブランチを「gitclone」してパッチを適用したjqueryを自分でビルドするか、コピーにパッチを適用するか、パッチを適用した2つのうちの1つをダウンロードできます(保証なし、yada、yada…):https ://gist.github.com /861689。これまでのところ、どちらも私の質問で説明した特定の問題を修正しているようです。

于 2011-03-09T04:25:47.873 に答える