82 votes

Comment puis-je faire de l'événement.srcElement travail dans Firefox et ça veut dire quoi?

il y a une instruction if sur mon site web de la société qui fait une page web imcompatible avec firefox

if(event.srcElement.getAttribute("onclick") == null){ 
...code..
document.mainForm.submit();
}

J'ai commenté la déclaration si les conditions et maintenant son travail avec forefox. Ma question est, qu'est-ce que l'événement.srcElement.getAttribute("onclick"), est-il important, ne serait-il causer des problèmes dans l'avenir. aussi, est-il quelque chose de similaire, je peut remplacer la condition pour qu'il fonctionne sur firefox?

Edit:

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

175voto

Felix Kling Points 247451

srcElement n'est disponible que dans IE. Dans tous les autres navigateurs c'est - target:

var target = event.target || event.srcElement;

if(target.onclick == null) { // shorter than getAttribute('onclick')
    //...
    document.mainForm.submit();
}

Aussi jeter un oeil à quirksmode.org - propriétés de l'Événement pour plus de croix-navigateur de l'information.


Quant à la question de ce qu'il fait:

event.target / event.srcElement contient une référence à l'élément de l' event a été soulevée. getAttribute('onclick') == null vérifie si un gestionnaire d'événements click est attribué à l'élément via inline de la gestion des événements.

Est-il important? On ne peut pas dire parce que nous ne savons pas ce que l' ...code.. est en train de faire.

5voto

Marwan Points 39

Dans IE cas de l'objet est disponible dans la fenêtre de l'objet déjà; 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 remarquez lorsque nous avons appelé la fonction à l'intérieur de l'html, nous avons ajouté un paramètre event seulement dans le cas où le navigateur est Firefox.

J'ai lu dans un article que l'objet de l'événement dans IE s'appelle window.event et dans Firefox, nous avons à le mettre comme paramètre.

Dans le cas où vous en avez besoin pour être fixé 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 -->
};

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X