いくつかのIEとFirefoxの互換性の問題
2478 ワード
簡単に見えるものもありますが、処理すれば面倒だと分かります.同様にページの色調整機能IEとFirefoxの互換性を変更する時に出会ういくつかの問題と解決方法を参考にしてください.
1、FirefoxはDIVのonClickイベントに応答できません.
理由:Firefoxでは以下の構文がサポートされていません.
理由:Fireoxではタグ名のみをパラメータとして使用することができず、以下の文のようにFirefoxでは機能しませんが、IEの下では正常に動作します.
理由:Firefoxでは、時間処理関数を指定する時にパラメータを持ってはいけません.そうでないと、Firefoxは関数だけを実行します.
解決:指定された関数にパラメータがない場合に使用します.
理由:FirefoxでinsertBefore関数の第二パラメータは省略できません.
解決:次のような文を使います.
解決:イベントハンドラ関数を指定する場合は、次のような文言を使います.
処理関数onmidClickにおいて:
解決:次のような文を使います.
1、FirefoxはDIVのonClickイベントに応答できません.
理由:Firefoxでは以下の構文がサポートされていません.
<DIV onClick="javascript:onPre();">
解決:全部以下の形式で書きます.<DIV onClick=onPre()>
2、ページ要素を動的に作成できません.つまり、createElementは無効です.理由:Fireoxではタグ名のみをパラメータとして使用することができず、以下の文のようにFirefoxでは機能しませんが、IEの下では正常に動作します.
var obj=document.createElement('<DIV id=h_sb></DIV>');
解決:全部以下の形式で書きます.var obj=document.createElement('DIV');
obj.id='h_sb';
3、動的に作成された要素のためにイベントハンドラ関数を指定する場合、Firefoxでは指定関数を実行します.設定ではありません.理由:Firefoxでは、時間処理関数を指定する時にパラメータを持ってはいけません.そうでないと、Firefoxは関数だけを実行します.
obj.onClick=test(1);
Firefoxでは、test関数をobjのclickイベントに関連付けるのではなく、test関数を実行します.解決:指定された関数にパラメータがない場合に使用します.
obj.onClick=test;
指定された関数にパラメータがある場合:obj.onClick=function(){test(1)};
4、動的要素をページに追加するとinsertBeforeエラーが発生します.理由:FirefoxでinsertBefore関数の第二パラメータは省略できません.
解決:次のような文を使います.
document.body.insertBefore(obj,null);
5、Firefoxではイベントオブジェクトがなく、マウス座標を直接取得できません.解決:イベントハンドラ関数を指定する場合は、次のような文言を使います.
obj.onClick=function(ev){onMidClick(ev,sb_h)};
説明:以上のevパラメータクラスのieのイベントオブジェクトは、システムによって自動的に記入され、第二パラメータはユーザカスタムパラメータです.処理関数onmidClickにおいて:
function onMidClick(evt,objSb){
var mx; // X
if ( window.event ){
mx=event.clientX;
}else{
mx=evt.pageX;
}
}
6、表の操作関数が無効です.以下の文は動作できません.
var newrow=objnt.insertRow();
var cal=newrow.insertCell();
理由:第四と同じパラメータが不可欠です.解決:次のような文を使います.
var newrow=objnt.insertRow(-1);
var cal=newrow.insertCell(-1);
7、Firefoxでstyle SheetのcssTextを直接取得できません.IEの下で、style SheetのcssTextを直接取得して設定することができますが、Firefoxではdocument.style Sheets[0].cssRules[0].cssTextを単独で取得するスタイルしか使えません.
document.styleSheets[0].cssRules[0].cssText=newcssText;
ページは自動的にスタイルを更新しません.必ず使う必要があります.
document.styleSheets[0].cssRules[0].style.cssText=newcssText;
8、Firefoxでは、配列を使って丸括弧()を使用することができず、中かっこ[]のみを使用することができます.