web-dev-qa-db-fra.com

Comment puis-je utiliser event.srcElement dans Firefox et que signifie-t-il?

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();
        }
    }
80

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...

172
Felix Kling

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 -->
};
5
Marwan

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.

0
Pankaj Shrivastava