2012-03-14

『一挙に英語翻訳』のWeb版で苦戦

『一挙に英語翻訳』のWeb版をつくろうとしているのですが、ブラウザごとの挙動が違っていて、とくにIE対策が困難そうです。

IE6は、そもそもサポート外と考えていますが、 IE7でもページが真っ白になって表示できません。
IE8やIE9でも、「→」がきちんと表示されない(横棒が欠けてしまう)という問題があります。もっとも「⇒」ならばちゃんと表示されるようなので、これは大した問題ではありません。

問題は、IEでは、window.open() で複数のタブを開こうとするとポップアップ・ブロックに引っかかってしまうことです。タブ一つだけなら開けるのですが、複数はダメみたいです。
ポップアップがブロックされた場合はメッセージが一応表示されるのですが、これが表示されるタブから別のタブに遷移してしまっているため、ユーザーが気づかない可能性が高いです。
さらに、ポップアップ・ブロックのメッセージは、ページが更新されると消えてしまいます。しばらく時間が経過しただけでも消えてしまうようです。

ページが更新されるとポップアップがブロックされたことを通知するメッセージが消えてしまうことには、Ajaxを使えば対応できそうです。
しかし、ブロックされずに複数のタブを開くにはどうしたらいいかはよく分かりません。window.open() に失敗した場合は、戻り値がnullだかundefinedだかになるようなので、そこでブロックの有無を判定して、ユーザーにメッセージを表示するというのが良いのかもしれません。
window.open() を使わずに、$("form").submit() とする方法も試してみましたが、こちらもやはり開けるタブはひとつだけで、残りはブロックされてしまいます。

0 件のコメント: