1月の冷たい風とWebモーダルダイアログに潜む不具合
年が明けてしまいましたね。
日付に疎い私には、年がインクリメントしたところで特別おめでたがるところもありません。
とは言ってもやはりいろいろ周りの都合もあったりで、
うちは毎年正月になると、母親の実家(徒歩10分)へ行き寿司と酒をあおり集合写真を撮って祖母と麻雀を打つという恒例行事があるのですが、今年は年末年始連勤というやつをしまして未だに顔を出せていません。
休みは十分にとっているのですが、どこも事前に予定を入れていて後回しになっているという礼儀知らずな状態です。
今回の仕事で特に目立ったのがJavascriptのモーダルダイアログを多用するという点。
そもそもWebでモーダルを使っているサイトをあまり見たことがありませんでした。
気になったのはFireFoxでのshowModalDialogの挙動。
モーダルダイアログをネスト(入れ子)していくとウィンドウを動かしたときにフリーズしたりとかよくありました。
更にモーダルダイアログからファイルの出力をした時、FireFoxだけファイル名や操作を選択するボタンのないダイアログが表示されて、キャンセルしか選択できません。
一応、iframeを作ってそこで出力するとなんとかなりましたが。
あまり使われない機能はWebクライアントでもいくつもの不具合を抱えているのでしょうね。
サイズ指定子ウィンドウにframeset使った時InternetExplorerで起こる不思議空間(笑)とかもそうだし。
showModalDialog はブラウザによってリターン値を受け取る方法が違う。
showModalDialogで表示するウィンドウは子ウィンドウ扱いになるので、親ウィンドウが受け取れる。そこで、HTMLはDOMなので、body オブジェクトにリターン値を入れて返す。
とりあへず機能は満たせたが、本当にこれでいいのか?
var args = null;
if(parent.dialogArguments)
{
args = parent.dialogArguments;
args.document.body.setAttribute(“returnValue_lastname”,lastname);
}
else if(parent.arguments)
{
args = parent.arguments;
args.document.body.setAttribute(“returnValue_lastname”,lastname);
}
window_close();