私の会社のWebサイトには、1つのWebページがfirefoxと互換性がないというifステートメントがあります
if(event.srcElement.getAttribute("onclick") == null){
...code..
document.mainForm.submit();
}
Ifステートメントの条件をコメントアウトし、今ではforefoxで動作するようにしました。私の質問は、event.srcElement.getAttribute( "onclick")とは何か、それが重要であり、将来問題が発生するかどうかです。また、Firefoxで動作するように条件を置き換えることができる同様のものがありますか?
編集:
function gotoRDManagerPT(PTId, bDDetailId) {
if(!proceed()) return false;
var target = event.target || event.srcElement;
if(event.target.getAttribute("onclick") == null) {
document.mainForm.displayRDManagerPT.value = "true";
document.mainForm.PTId.value = PTId;
document.mainForm.bDDetailId.value = bDDetailId;
document.mainForm.submit();
}
}
srcElement
は、元々IEに由来する独自のプロパティです。標準化されたプロパティは target
:
_var target = event.target || event.srcElement;
if(target.onclick == null) { // shorter than getAttribute('onclick')
//...
document.mainForm.submit();
}
_
クロスブラウザの詳細については、 quirksmode.org-Event properties もご覧ください。
それが何をしているかという質問について:
_event.target
_/_event.srcElement
_には、event
が発生した要素への参照が含まれます。 getAttribute('onclick') == null
は、クリックイベントハンドラーが インラインイベント処理 を介して要素に割り当てられているかどうかを確認します。
大切ですか? _...code..
_が何をしているかわからないので、私たちは言うことができません。
IEイベントオブジェクトはウィンドウオブジェクトで既に使用可能です; Firefoxでは、イベントハンドラーのパラメーターとして渡されます。
例
JavaScript:
function toDoOnKeyDown(evt)
{
//if window.event is equivalent as if thie browser is IE then the event object is in window
//object and if the browser is FireFox then use the Argument evt
var myEvent = ((window.event)?(event):(evt));
//get the Element which this event is all about
var Element = ((window.event)?(event.srcElement):(evt.currentTarget));
//To Do -->
}
HTML:
<input type="text" id="txt_Name" onkeydown="toDoOnKeyDown(event);"/>
Html内で関数を呼び出したときに気づいたように、ブラウザーがFirefoxの場合に備えて、パラメーターevent
を追加しました。
私は記事で、IEのイベントオブジェクトはwindow.event
そして、Firefoxではパラメーターとしてそれを配置する必要があります。
コードに添付する必要がある場合:
document.getElementById('txt_Name').onkeydown = function(evt) {
var myEvent = ((window.event)?(window.event):(evt));
// get the Element which this event is all about
var Element = ((window.event)?(event.srcElement):(evt.currentTarget));
// To Do -->
};
次のようにクイックフィックスを試してください:
コードに含める:
let target = event.target || event.srcElement;
そして変化
event.srcElement.XXXXX to target.XXXXX
これにより、Firefoxの問題が解決されます。