2011-02-04 8 views
0

dojo.stopEventは、IE9のクリックイベント(または送信イベント)のデフォルトアクションを停止しないようになった。どのようにイベント処理がIE8からIE9に変更されたのですか?IE9でイベントを停止する最も良い方法は何ですか? event.preventDefault()はクリックイベントの発生を停止するようには見えません。IE9ベータ版で伝播するクリックイベントを停止する最も良い方法は何ですか?

+0

復帰はfalse; ? – zack

+0

dojoがIE9でIE5-8のソリューションを強制するように見える。試してください:e.cancelBubble = true;実際にはfalseを返します。 – BGerrissen

答えて

0

Dojoのようなサウンドは、ブラウザを盗聴し、ユーザーエージェント文字列に基づいてイベント処理コードのIEのみの実装を提供しています。ソースコードを簡単に見てみると、これもそうです。これは、特にこの場合の特徴検出が容易であるため、特徴検出を使用すべきである汎用ライブラリに対する悪い挙動である。

私の助言:これを処理するにはあまりにも無能な場合は、道場の道場。

+1

Dojoは将来、機能検出ルートを訪れる予定です(明らかに1.6にはなりません)。しかし、これはIE9での既知の問題になりつつあります。 OTOH、現在UAに依存していないと知られているライブラリーはありますか? –

+0

@Ken:私は完全にはわかりません。私は、jQueryが1.3付近で大きな改善をした印象を受けましたが、私は最近チェックしていません。 –

+0

@Ken:Dojo開発者が何をしているのか正確には分かりません。最初のIE 9プレビューは10ヶ月前に2010年3月にリリースされました。 IE 9で自分のライブラリをテストするのに十分な時間があるようです。 –

2

これは、Dojo 1.6 RC1の時点で解決する必要があります。試してみる。

http://download.dojotoolkit.org/release-1.6.0rc1/

http://bugs.dojotoolkit.org/ticket/12257

+0

これはいいです、私はこれが修正されてうれしいです、そしてイニシアチブを取ってうまくいっています。しかし、パッチを簡単に見てみると、機能検出を使用する代わりに、IE9に対処するためにユーザーエージェントベースのスニッフィングをさらに追加するだけです。代わりに機能の検出を使用するように再作成しないでください。そうすれば、次回に新しいブラウザが出るときに変更する必要のない、よりメンテナンス可能なコードになります。明らかにこのコードは最初に書かれたコードであれば、この変更は必要ではありませんでしたが、それはあなたのせいではないと思います。 –

+0

私はあなたの答えにこれをすでに説明しています。機能検出はDojoがやる予定のルートですが、1.6ではそうではありません。リリース前の週に全面的に現実的に変更できるわけではありません。はい、ここで適用された修正は、UAチェックのジレンマを現在「永続化」していますが、他のものに影響を与えることなく問題のみを修正するのは影響の少ない変更です。 –

+0

Dojoのようなライブラリのポイントは、新しいブラウザがリリースされるたびにそのコードを使用するコードが期待できる場合、特にそのブラウザのプレビュービルドが完全なリリース。 –

関連する問題