none
HtmlInputFile コントロールでのevent.keyCode プロパティ値変更について RRS feed

  • 質問

  • ファンクションキー操作を無効にする為、event.keyCode プロパティ値を変更する処理を行っておりますが、
    HtmlInputFile コントロールにフォーカスが当たっているときに処理が動くと、"アクセスが拒否されました" のエラーが発生します。

    調査したところ、
    IE では、悪意のあるスクリプト コードによってユーザーの意図しないファイルがクライアント システムから送信される危険性を排除するため、ファイル アップロード フォーム (file 型の input 要素) がフォーカスを持つ場合に event.keyCode プロパティ値を変更する処理を禁止するように実装されていることが判りました。

    ファイルのアップロードとファンクションキー無効化は絶対要件のため、どちらかを無くすことが出来ず対応に苦慮しております。
    何か良い代替策が御座いましたら何方か御教示頂けないでしょうか。

    宜しく御願いします。

    2009年6月10日 0:42

すべての返信

  • Webブラウザを自作するしかないと思います。
    そしてその要件を満たしたWebブラウザはセキュリティホールを持ち、ウィルスなどの侵入を許すことになるでしょう。
    2009年6月10日 21:40
  • 了解しました。

    打つ手無しということですね。

    有難う御座います。
    2009年6月12日 3:10
  • document.onkeydown で event.keyCode を取得して、ファンクションキーだったら window.event.returnValue = false;
    とするなんてことはもうとっくに試していて、結果は NG ということなんでしょうか?
    2009年6月13日 5:04
  • window.event.returnValue = false;の処理が動いた時点で
    アクセス拒否エラーとなってしまいまうすので、NGかと思います。
    2009年6月15日 0:10
  • > window.event.returnValue = false;の処理が動いた時点で
    > アクセス拒否エラーとなってしまいまうすので、NGかと思います。

    自分が IE8 で試した限りでは、少なくともエラーにはならないんですが・・・

    といっても、F1 キーを押すとヘルプウィンドウが出るとかは避けられず、window.event.returnValue = false;
    の意味はないようで、ファンクションキーの無効化はできないということなのかもしれませんけど。

    2009年6月15日 15:07
  • 完璧ではないと思いますが
    onfocus時にフォーカスを外すとか。

    # まぁブラウザの挙動にまで関与するのは
    # あまりよい考えではないと思いますが。
    2009年6月23日 3:55