二〇〇七年 三月 三十一日(

旧暦 二月十三日 友引
丁亥年 二月十三日

マウスで文字列を選択。その2

先日の続き。

Prototypeは素敵なフレームワークで、クロスブラウザをほとんど考えずに実装できるみたいなんだけど、やはり、ブラウザごとにいろいろ違いがあることは否めないみたい・・・。

この 「 文字列 」 という文字列をマウスで選択してみてもらいたい。

僕の試したところ、Windows版のFirefoxでは問題なくポップアップ・ウィンドウが開くが、IEだと機能的には問題ないが、ポップアップウィンドウが開くと同時に、文字列の選択部分が ドバッ と広がり、ページの大半を選択してしまう。
IEではマウスボタン・ダウンとアップの際のフォーカスの扱い方がFirefoxとは異なるということなのかな、となんとなく思う。

また、ポップアップしたウィンドウを最大化したときの挙動も、ブラウザごとに少しずつ異なるようだ。同じFirefoxでもWindowsではちゃんと最大化されるのに対して、Linux版では最大化ではなく、画面の半分ぐらいまでしか広がらない。

また、Ajax.Requestにはリクエストの処理のステータス(たとえば、ロード中とか、リクエスト完了とか、)によって、それぞれ異なる関数を呼び出す機能があってとても面白いんだけど、どうもIEだとちゃんと働いてくれない。
リクエスト結果のロード中にウィンドウの中に砂時計を出しておいて、ステータスが完了になったら取得した結果を表示。という風にしたいのに、先に取得した結果を出して、その直後に砂時計の画面に切り替えるという、まったく逆の挙動を見せたりする。IEではひとつのリクエストに対して異なる2つ以上のステータスは使えないんだろうか・・・。

まあ、難しい話はともかく、Safariでどうなるのか、だれかMacの人、教えてください。

Posted by mura at 2007年3月31日 00:07 | トラックバック
コメント

報告しようと思って忘れてました(^^;。
Safariですが、こんな感じです。
・ポップアップウィンドウのタイトルバーは正常だけど、Wikipediaから取得したテキストが文字化けします。該当無しのごめんなさいメッセージは文字化けしません。
・Safari、Mac版Firefox2とも、ポップアップウィンドウをドラッグしようとしてもマウスに追従せず、ドロップしたらそこに瞬間移動します。
・Safari、Mac版Firefox2、Win版Firefox2とも、親ウィンドウが少しでもスクロールした状態でポップアップウィンドウを最大化すると、表示位置が変です。
・WinXP Pro SP2のIE6.0SP2環境で、選択部がドバッと広がる現象は見られませんでした。

他に確認して欲しい項目があれば言ってくださいな。必要ならスクリーンショットも用意しますよ。

Posted by: はしもと at 2007年3月31日 01:29

ありがとう!

文字コードは、このページ自体はEUCなのですが、WikipwdiaAPIが、入力・出力ともUTF-8ということで、送信時にはすべてUTF-8にコンバートして送っています。
ですが、受信したものはコンバートせずにそのまま表示しています。つまりUTF-8なはずです。(Winでは化けないので確認してませんでしたが・・・)
なので、考えてみれば文字化けするのも当然という気もします。(「ごめんなさい」という文字はEUCです)

そのほか、ウィンドウの挙動に関しては、利用したWindow Classというやつに依存する問題なのだと思います。それとも、コーディングで吸収できるようなことなのかな・・・。
いったい、どの辺の環境を標準として開発されているのか・・・。もうちょっといろいろやってみないと、クセは分からない感じですね。

はしもとさんは、こういうAjaxのフレームワークとか使ってなにかやったということあります?

Posted by: mura at 2007年3月31日 02:28

WikipediaAPIからの戻りを、EUCにコンバートしてみた。
すると、こんどはWinで文字化け・・・。
Windowsでは、ウィンドウのタイトル部はEUCなのに、本文がUTF-8でちゃんと表示されていて、全部EUCにすると本文が化けるという、ワケワカな状態。

うーん。もともとのページ自体がUTF-8じゃないのがいけないのかな。

APIとのやりとりをするプログラムにOSの情報を送らないと解決できないということなのか・・・。
それともJSで文字コードを変換する・・・?

Posted by: mura at 2007年3月31日 02:45

ボクはまだほとんどAjaxには手をつけていないのです、お恥ずかしい(^_^;。

このページのhtmlファイルとjsファイルをダウンロードして一部JavaScriptファイル等のURLを書き換え、手元で下記で紹介されている処理を入れてみたらSafariで文字化けがなくなりましたよ。

[ajax] Safari の responseText で UTF-8 コード文字化け回避 Kawa.netブログ(川崎有亮)/ウェブリブログ
http://kawa.at.webry.info/200511/article_9.html

アクセスログに変なのがあったら、このテストをしたときのものだと思ってください(^_^;。

Posted by: はしもと at 2007年3月31日 13:13

なるほど。
・・・しかし、これはSafariのバグなのではw

とりあえず、MacだったらEUCで返すようにしましたが、多分これじゃダメですね。この関数を入れてみます。

Posted by: mura at 2007年3月31日 14:32

SafariのUTF-8対応の修正をしてみました。
どうかな・・・。

Posted by: mura at 2007年3月31日 14:45

IEで選択範囲がドバっと広がってしまう現象について発見。
選択した文字列が、ポップアップするウィンドウの下になる場合のみ選択範囲が広がるみたい。上下左右の周辺部分の文字列を選択した場合は選択範囲は広がらない。

Posted by: mura at 2007年3月31日 14:57

Safariでも文字化けしなくなりました。
Safari、Mac版Firefox2で、ドラッグでポップアップウィンドウが追従するようになりました。もしかしたらボクのiBookが処理が遅くて追従開始が遅かったのかも?
前のコメントの時は見えなかった読み込み待ちのグルグルが、Safari、Mac版Firefox2、IE6.0、Win版Firefox2で見えるようになりました。
最大化は、Safariでは常にページの一番上に表示されるようになりました。
Firefox2はMac・WinともY座標が変わらずに最大化のサイズになります。
IEでドバッと広がる現象は、muraさんがコメントで書かれた方法でも再現しませんでした。

Posted by: はしもと at 2007年3月31日 16:37

文字化けの確認ありがとう。
ポップアップの追従は、PCの処理能力に負うところが大きいみたい。僕の家の遅いマシンではピクリともしませんでした(笑)。
グルグルは先ほど少し実装を変更して再度追加しました。
今度はIEでもいけたようです。

Firefoxに関しては僕の環境とちょっと挙動が違うようですね。Win2000では一応表示されているウィンドウ領域いっぱいまで表示されます。Linuxでは上辺のY座標が変わらない感じでした。

ウチはWin2000SP4+IE6なので、選択領域の話はOSに依存することかもしれないですね。(あるいはマウスかな・・・)

Posted by: mura at 2007年3月31日 17:05
コメントする









名前、アドレスを登録しますか?






トラックバック
このエントリのトラックバックURL

http://www.villagewood.net/mt/mt-tb.cgi/388

◇このサイトのサーバの調子によって、トラックバックを送信してもエラーが表示されたり、すぐにこのページに反映できないときがあります。ですが、トラックバック自体は送られていますので、重ねて送っていただかなくても大丈夫です。こちらでも出来るだけ早く反映できるようにrebuildしますので、ご容赦ください。
参照元URL
関連エントリ