Frage Wie kann ich event.srcElement in Firefox verwenden und was bedeutet das?


Es gibt eine if-Anweisung auf der Website meiner Firma, die eine Webseite mit Firefox unkompatibel macht

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

Ich habe die Bedingungen der if-Anweisung auskommentiert und arbeite jetzt mit dem forefox. Meine Frage ist, was ist event.srcElement.getAttribute ("onclick"), ist es wichtig, würde es Probleme in der Zukunft verursachen. auch, gibt es etwas ähnliches ich kann die Bedingung mit so ersetzen, dass es auf firefox funktioniert?

Bearbeiten:

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

76
2018-03-14 16:47


Ursprung


Antworten:


srcElement ist Eigentum, das ursprünglich von IE kommt. Die standardisierte Eigenschaft ist target:

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

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

Sehen Sie sich auch an quirksmode.org - Ereigniseigenschaften für mehr Browser-Informationen.


In Bezug auf die Frage, was es macht:

event.target / event.srcElement enthält einen Verweis auf das Element der event wurde auf erhöht. getAttribute('onclick') == null prüft, ob ein Click-Event-Handler dem Element via zugewiesen wurde Inline-Ereignisbehandlung.

Ist es wichtig? Wir können es nicht sagen, weil wir nicht wissen was ...code.. macht.


163
2018-03-14 16:49



Im IE ist das Ereignisobjekt bereits im Fensterobjekt verfügbar; In Firefox wird es als Parameter im Event-Handler übergeben.

Beispiel

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);"/>

Wie Sie bemerken, als wir die Funktion im HTML-Code aufgerufen haben, haben wir einen Parameter hinzugefügt event nur für den Fall, dass der Browser Firefox ist.

Ich habe in einem Artikel gelesen, dass das Ereignisobjekt in IE aufgerufen wird window.event und in Firefox müssen wir es als Parameter angeben.

Falls Sie es im Code einfügen müssen:

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
2018-03-15 12:03