- - PR -
IE7 での Ctrl+ボタン押下の検出方法
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2009-03-31 14:22
すみません、、確かにおっしゃるとおりです。 FireFox、NN、Opera でイベントが拾えたのに、 IEでは拾えないからバグだー!!!…とさわいでいましたが、 onclick イベントがどのタイミングで発生するかなんて 確かにブラウザの仕様次第なんですよね。。 今まで散々IEのバグに泣かされてきたので こういう発言になってしまいました、すみません。 具体的にはこれまで仕事の中で10件くらいのIEバグを 見つけたことがあり、Microsoftに依頼して 専用の修正パッチを提供してもらったこともありました。 …以後発言に気をつけます m(__)m.. 貴重な時間を割いていただいてすみませんでした。 [ メッセージ編集済み 編集者: さね 編集日時 2009-03-31 14:39 ] | ||||||||||||
|
投稿日時: 2009-03-31 14:48
遅くなってごめんなさい、類似するものがなかったので、登録しました。
https://connect.microsoft.com/IE/feedback/ViewFeedback.aspx?FeedbackID=428391 検証、レーティング、回避策(デューンさんの方法)の登録をお願いします。 今のところ「バグ」となっていますが、「by design」でクローズする可能性は大いにあります。「今のままだと、こんな時に大いに困る」というのを、「コメント」のところに“英語で”書き込んでおくと、「by design」であっても修正の対象になる可能性が上がります。 | ||||||||||||
|
投稿日時: 2009-03-31 15:07
jQueryを使ってやってみました。
default.js
素直に全画面修正してjQueryのライブラリを読み込ませても良いんですが、 弄りたくなかったらこういう手もあります。 foo.js
最初に遷移先のURLを退避してから#に置き換えます。 クリックイベントで退避したURLがあったら遷移します。 return falseで元のイベントをキャンセルします。 bar.html
Ctrl+Clickしてみて下さい。 | ||||||||||||
|
投稿日時: 2009-03-31 18:11
>Jittaさま
わざわざありがとうございます、すばらしいです。 こんなフィードバックページがあるとは、知りませんでした。 これで直る/直らない何れにしろ、IEの開発者に現象の 存在を知ってもらうことは出来るわけですね。 後でコメントに、どれだけ困るかを追記しておこうと思います。 頑張って英語書かなきゃ(汗) >satomiさま おぉぉ。すばらしいです! これは完全な回避策になりそうです。 早速試してみましたがちゃんとイベントキャンセルされて タブが開かずに自分自身を書き換えることに成功しました。 jQuery や ExtJS などのライブラリを利用すると、 案外簡単に回避できるものなんですかね。凄いです。 …と、ここまで書いて、でも jQuery でも、実際やっていることは 一緒だよなぁ…と思ってコードを少し読んでみたのですが、 obj.attachEvent(); などをやっているだけだし、何で jQuery だと onclickイベントが取れるんだろう?? と思ったら、以下のようなミソがありました。 イベント飛ぶ: ○ <a href="#" onclick="alert('click!')">aaa</a> イベント飛ばない:× <a href="http://www.yahoo.co.jp" onclick="alert('click!')">aaa</a> 何と、自分自身に飛ぶ hrefの場合はちゃんと onclick イベントも 飛ぶし、イベントキャンセルも出来るのでした。 …というわけで、当面の回避策としては <a href="#" ... の形で書いておいて、 onclick イベントで location.href を自分で書き換えるという方法でしょうか。 #jQuery を使うと、上記変更すら必要ないので 今回はこっちを適用しようと思っています! みなさま、お忙しいところ返信誠にありがとうございました m(__)m.. 後はフィードバックページで、IEの仕様変更が 入ってくれることを祈りつつコメントに追記する感じですね。 重ねて、ありがとうございました m(__)m | ||||||||||||
|
投稿日時: 2009-03-31 23:32
おお、そこまで確認していたのですか。それは失礼しました。 であれば「IE の独自仕様か、もしくはバグである可能性が高い」という説明をすれば十分ではないでしょうか。 # 本当にバグなのかどうかは、さねさん(やお客さん)にとっては重要ではないと思うし |