アクセスキーを連打するとJavaScriptエラーが発生
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-03-01 15:07
お世話になっております、みすと申します。
アクセスキーの使用について質問させて下さい。 画面再読み込み時にアクセスキーを連打するとJavaScriptエラーが発生してしまいます。 画面構成は縦3つのフレームにわけており、 一番上のフレーム:入力項目が配置されている画面 二番目のフレーム:ボタンが配置されている画面 三番目のフレーム:ユーザーIDなどの情報を表示する画面 となっています。 二番目のフレームのボタンにはアクセスキーを設定して(はいボタンなら"Y"など)いるのですが ボタン押下でsubmitが走り画面を読み込んでいる最中にアクセスキーを連打すると 「オブジェクトでサポートされていないプロパティまたはメソッドです」エラーが発生してしまいます。 (ただ、エラーが発生しても画面再読み込みしてしまうのでエラーで画面が動かなくなるということはありません) デバッガーでエラー発生箇所を見ていたのですが、 二番目のフレームのHEADタグ内で発生しているようでHTMLの読み込み時に起きているようです。 読み込み時に発生なのでonLoadで拾うことができずJavaScriptで何らかの制御をかけることもできません・・。 (そもそもアクセスキーの制御なんてできるのかということもありますが・・) ネットや書籍等で探してみたのですが対処法が見つからず、こちらで質問させていただきました。 もしこのような現象にあったことがある方や対処法がわかる方が いらっしゃいましたら是非ご教授いただければと思います。 よろしくお願いいたします。 |
|
投稿日時: 2007-03-01 15:39
>もしこのような現象にあったことがある方
一応あります。 正確にどのような現象かは実際に見てみないと分からないですが、フレーム分けしてい、という事なので、完全にページが読み込まれていない状態でフォームにアクセスしようとするから、オブジェクトが存在しない旨のメッセージが出るのだと思います。 なんとかするとしたら、 ・アクセスキーを押したら、対象のページ用に、例えば、now_loading_flgなどを付けて、trueにする。 ・now_loading_flgがtrueの間は、何度アクセスキーを押されても相手にしない。 ・ページがロードしたら、ページの中に、now_loading_flgをリセットするスクリプトを仕込んでおく。 (もしくは、ひょっとしたらフレームのonloadイベントが有効かもしれません。) ですが、見ての通り複雑なので、今やるとしたらajaxでそれぞれのページ部品を表示させてやる、というのがいいでしょうね。 |
|
投稿日時: 2007-03-01 16:47
冬寂様
迅速なご返信ありがとうございます! >・アクセスキーを押したら、対象のページ用に、例えば、now_loading_flgなどを付けて、trueにする。 >・now_loading_flgがtrueの間は、何度アクセスキーを押されても相手にしない。 >・ページがロードしたら、ページの中に、now_loading_flgをリセットするスクリプトを仕込んでおく。 >(もしくは、ひょっとしたらフレームのonloadイベントが有効かもしれません。) 対象ページのonLoadで拾うことはできましたが、 画面を読み直すため、セットしたフラグ変数が初期化されてしまい 条件分岐にうまくひっかかりませんでした・・・。 フラグのセット・リセットのタイミングがよくないのでしょうか・・? ソースは以下です。 実際は外部JSファイルにしており、通信のfunctionと対象ページのonLoadで実行するfunctionは別のJSファイルになっています。 -----ボタン押下で通信を行うfunction----- function buttonClick(){ bAccessKeyOk = false; ←アクセスキー使用不可フラグを不可に document.frm.submit(); return ; } -----対象ページのonLoadで実行するfunction----- function JSMessage_initialize(){ //画面リロード中にアクセスキー押下されても無視する if(!bAccessKeyOk){ ←ここでフラグが初期化されていてifに入らない event.returnValue = false; return; } <<その他onLoad時の処理>> bAccessKeyOk = true; ←最後でアクセスキー使用okにする } >今やるとしたらajaxでそれぞれのページ部品を表示させてやる、というのがいいでしょうね。 通常はご指摘いただいたようにAJAX通信でボタンなどを表示させるようにしていますが 印刷機能などとの絡みで、どうしても画面読み込みを行わないといけない部分があり 一部画面遷移が発生しています・・・。 よろしくお願いいたします。 |
1