sur le site Web de mon entreprise, une déclaration if indique qu'une page Web est incompatible avec Firefox
if(event.srcElement.getAttribute("onclick") == null){
...code..
document.mainForm.submit();
}
J'ai commenté les conditions de la déclaration if et maintenant, il fonctionne avec forefox. Ma question est la suivante: qu'est-ce que event.srcElement.getAttribute ("onclick")? Est-il important? Cela poserait-il des problèmes à l'avenir? aussi, y a-t-il quelque chose de similaire avec lequel je peux remplacer la condition afin que cela fonctionne sur firefox?
Modifier:
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
est une propriété propriétaire originaire d'IE. La propriété standardisée est target
:
var target = event.target || event.srcElement;
if(target.onclick == null) { // shorter than getAttribute('onclick')
//...
document.mainForm.submit();
}
Regardez aussi quirksmode.org - Propriétés de l'événement pour plus d'informations sur plusieurs navigateurs.
En ce qui concerne la question de ce qu'il fait:
event.target
/event.srcElement
Contient une référence à l'élément sur lequel la event
a été déclenchée. getAttribute('onclick') == null
vérifie si un gestionnaire d'événements click est affecté à l'élément via traitement des événements en ligne .
Est-ce important? Nous ne pouvons pas dire parce que nous ne savons pas ce que fait le ...code..
.
Dans IE, l'objet événement est déjà disponible dans l'objet window; dans Firefox, il est passé en tant que paramètre dans le gestionnaire d'événements.
Exemple
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);"/>
Comme vous le constatez lorsque nous avons appelé la fonction dans le code HTML, nous avons ajouté un paramètre event
au cas où le navigateur serait Firefox.
J'ai lu dans un article que l'objet event in IE s'appelle window.event
et dans Firefox, nous devons le définir comme paramètre.
Au cas où vous auriez besoin que ce soit inséré dans le code:
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 -->
};
Essayez la solution rapide comme suit:
Inclure dans le code:
let target = event.target || event.srcElement;
et changer
event.srcElement.XXXXX to target.XXXXX
cela résout le problème avec Firefox.