2005年10月24日
川俣晶の縁側ソフトウェア技術雑記total 5697 count

ブラウザ間非互換性: Firefoxでeventキーワードの有効範囲が異なる

Written By: 川俣 晶連絡先

 詳細は未確認で何が正しいのかも未調査ですが。

 とりあえず、分かったことだけメモ。

現象 §

 Webブラウザ上のJavaScriptにて、イベントハンドラが情報を取得するためのeventキーワードが有効となる範囲が、Webブラウザの種類によって異なる。

 Internet Explorer 6.0とOpera 8.5では、イベント発生箇所から呼び出した関数内でも参照できるが、Firefox 1.0.7は関数内では参照できない。

再現プログラム §

 以下のコードを個々のWebブラウザで開き、キーを押してみる。

 "event.keyCodeの評価に失敗しました"というメッセージが、Firefox上でのみ表示される。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>test</title>

<script><!--

function myfunc()

{

    try

    {

        alert(event.keyCode);

    }

    catch(e)

    {

        alert("event.keyCodeの評価に失敗しました");

    }

}

// --></script>

</head>

<body onkeydown="alert(event.keyCode);myfunc();">

<p>Press any key-down.</p>

</body>

</html>

対策 §

 上記のようなケースで、イベントハンドラとなる関数には必要な情報を受け取る引数を付ける。つまり、myfunc(event.keyCode);というようにして呼び出し、必ず必要な情報を明示的に渡す。

感想 §

 もしかしたら、普通に書いていると発生しないケースかもしれませんが、サンプルソースを切り貼りしていると、時としてこういうソースが出現してはまる可能性があり得ます。(というか、まさにそのシナリオ通りにはまった)

2005年10月27日追記 §

 より詳細には以下を参照。(Motohikoさん、ご連絡感謝)

Motohikoの日記 [Bug] Bug 54341 - window.event has no properties error : pre

Facebook

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20051024213959
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.