ひさしぶりにASP.NET AJAXの使いどころの見極め「兼」個人的に欲しいアプリ作りを再開しようかとFirefoxでアプリを開いてみると、ありゃ?子画面の表示に利用しているModalPopupExtenderコントロールのShowメソッドが意図したとおりに動作しないじゃないかorz
ModalPopupExtenderで表示したパネルコントロールは通常、OKかキャンセルボタンとして設定したボタンをクリックすると閉じてしまいます。それをShowメソッドを呼び出すことで表示を維持することができます。それが可能だとパネルコントロール内でなんらかの入力をする場合、入力チェックなどをそこで出来るわけです。実際IE6とIE7では動作します。
・・・いやいやいや。Firefoxでも動かしてたぞ!と思って去年設定したFirefoxPortableをひっぱり出してきてみました。Firefoxのバージョンは2.0.0.1です。むー動くやん。じゃあFirefoxのバージョンアップをすれば、どーよ?と思ってバージョンアップを試みる。
・・・・・まーじーでーすーかぁぁぁぁぁorz
拡張機能が悪さをしているならばわかるのだけれど、ブラウザのバージョンアップで動作しなくなるのは辛い。Ajax control toolkitがバージョンアップしてて、それを適用済みだったのでそれかなぁとも思ったのだけれども、それより辛い(TAT)
こういうとき、フレームワークを他に依存しているのを実感しますねぇ。すぐに手を出せないし、原因個所がわかってもすぐにそれを反映できない。
さーどうしたものか。
まずはここの内容を確認してみよかなぁ。。。
2007/03/11追記ASP.NET Forums - ModalPopup Postback issues in Firefox 2.0.0.1にてとりあえずの回避策が提示されてます。
まず、配置しているModalPopupExtenderコントロールにBehaviorIDを設定します。ここではIDを「ModalPopup」とします。
次にPage_Loadメソッドに以下のコードを追加します。BehaviorIDに「ModalPopup」以外を設定する場合、ソース中のIDも変更しましょう。
String s = "{ window.setTimeout(\"$find('ModalPopup').show();\",0); }";
ScriptManager.RegisterStartupScript(Page, typeof (Page), "openModalPopup", s, true);
一応これでshowメソッドが有効となります。Firefox2.0.0.2で確認済み。なんだか背景が一瞬消えたりと若干怪しいですが、まあ正式対応を待ちましょう。
投稿日時 : 2007年3月10日 23:54