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が同義はしっくりくるんですが。
返信削除