FlexのAlertでEnterキー押してFileReference.browse()呼び出そうとするとエラーになるとは・・・
はじめて知ったのだけど、FlexのAlertを表示してクリックして、ENTERキーでAlertを閉じてFileReference.browse()呼び出そうとするとエラーになるのね・・・しかし、ESCキーやSPACEキーならエラーにならない。こりゃ、どういうことだ?
ドキュメントによると、FileReference.browse()の呼出しは、マウスイベントやキー入力イベントなどのユーザー操作に応じてメソッドが呼び出されない場合はエラーになるという事が書いてある。これは知っていた。
しかし、ESCキーやSPACEキーは受け付けるのにENTERキーは受け付けないなんておかしい。ENTERキーは重要な入力キーなので、セキュリティーに配慮してのことだろうか?Alertの仕様のためか?
よくわからないけれど、とにかくENTERキーではエラーになるので何とかしないといけない。
例えばこんな感じ。
ドキュメントによると、FileReference.browse()の呼出しは、マウスイベントやキー入力イベントなどのユーザー操作に応じてメソッドが呼び出されない場合はエラーになるという事が書いてある。これは知っていた。
しかし、ESCキーやSPACEキーは受け付けるのにENTERキーは受け付けないなんておかしい。ENTERキーは重要な入力キーなので、セキュリティーに配慮してのことだろうか?Alertの仕様のためか?
よくわからないけれど、とにかくENTERキーではエラーになるので何とかしないといけない。
例えばこんな感じ。
function onCloseAlert(evt:CloseEvent):void { var fr:FileReference = new FileReference(); try { fr.browse(); } catch (err:Error) { // ここでエラーが出る場合はほぼAlertをクリックしてEnterキーが押された時 // EscやSpaceキーではエラーにならない Alert.show("Flash Playerの制限により、Enterキーは受け付けられません。\nキーボードを使う場合は、SpaceキーかEscキーを押してください。", "ファイルブラウズエラー"); } }
Escキーを押すこととSpaceキーを押すことが同じ意味とは、ちょっと不思議です。SpaceとEnterが同義はしっくりくるんですが。
返信削除