FlexのAlertでEnterキー押してFileReference.browse()呼び出そうとするとエラーになるとは・・・

はじめて知ったのだけど、FlexのAlertを表示してクリックして、ENTERキーでAlertを閉じてFileReference.browse()呼び出そうとするとエラーになるのね・・・しかし、ESCキーやSPACEキーならエラーにならない。こりゃ、どういうことだ?

ドキュメントによると、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キーを押してください。", "ファイルブラウズエラー");
  }
}

コメント

  1. Escキーを押すこととSpaceキーを押すことが同じ意味とは、ちょっと不思議です。SpaceとEnterが同義はしっくりくるんですが。

    返信削除

コメントを投稿

このブログの人気の投稿

レオナルド・ダ・ビンチはなぜノートを「鏡文字」で書いたのか?

macでsmb(samba)共有サーバーに別名で接続(別アカウント名で接続)する方法

Google DriveにCURLでアップロードするには?