Zhidao の Yisou プロジェクトの検索カテゴリは JS を通じて動的に生成され、生成された各要素に属性とイベントを動的に追加する必要があります。このうち属性の追加は値を代入することで行うことができ、IEでもFFでも同様です。例:
var 要素 = document.createElement('select');
element.id = "myselect";
上記のステートメントは IE と FF で同じ効果があり、正常に実行されます。しかし、作成する要素のほとんどはイベントを動的に追加する必要があるため、属性を追加する場合のように最後にドットを直接追加してからイベント名を記述し、その後にコード文字列を続けることはできません。のエラーが報告されます。したがって、次のメソッドを使用してイベントを追加できます:
まず第一に、現在のブラウザがどのブラウザであるかを判断する必要があります。以前の定義
を引き続き使用します。if( element.attachEvent ){
//IE および IE コアを搭載したブラウザの場合 (1)
}else if( element.addEventListener){
//FF および NS コアを搭載したブラウザ (2)
}
上記の if ステートメント ブロックは、現在のブラウザが IE か FF かを判断するのに役立ちます。
ブラウザがそれを判断し、後はその関数を要素に登録するだけです。以下に定義した関数を示します。
関数 showElementId(elmt){
アラート(elmt.id);
}
関数の機能は非常に単純で、パラメータ内の要素の ID を要求するものです。
IE ブラウザの場合は、上記のコメント (1) に次のコードを挿入します。
element.attachEvent( "onclick",function(){showElementId(elmt)});
FF ブラウザの場合は、上記のコメント (2) に次のコードを挿入します。
vareventName = "onclick".replace(/on(.*)/i,'$1');
element.addEventListener(eventName,function(){showElementId(elmt)},false);
FFの要素にイベントを登録する場合、イベント名の前にonを付ける必要がないため、onを置き換える必要があります。
将来、開発プロジェクトの同僚が JS を使用して要素にイベントを動的に追加する必要がある場合は、上記の方法を使用できます。そうすることで、FF Browserを利用する際に、せっかく開発した機能が利用できなくなるという事態を防ぐことができます。