Auf der Website meines Unternehmens befindet sich eine if-Anweisung, die eine Webseite mit Firefox nicht kompatibel macht
if(event.srcElement.getAttribute("onclick") == null){
...code..
document.mainForm.submit();
}
Ich habe die if-Anweisungsbedingungen auskommentiert und jetzt funktioniert es mit forefox. Meine Frage ist, was ist event.srcElement.getAttribute ("onclick"), ist es wichtig, würde es in Zukunft Probleme verursachen. Gibt es auch etwas Ähnliches, durch das ich die Bedingung ersetzen kann, damit 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();
}
}
javascript
firefox
cross-browser
code511788465541441
quelle
quelle
Antworten:
srcElement
ist Eigentum, das ursprünglich aus dem Internet Explorer stammt. Die standardisierte Eigenschaft isttarget
:var target = event.target || event.srcElement; if(target.onclick == null) { // shorter than getAttribute('onclick') //... document.mainForm.submit(); }
Auch einen Blick auf quirksmode.org - Ereigniseigenschaften für mehr Cross - Browser - Informationen.
In Bezug auf die Frage, was es tut:
event.target
/event.srcElement
enthält einen Verweis auf das Element, auf dasevent
das angehoben wurde.getAttribute('onclick') == null
Überprüft, ob dem Element über die Inline-Ereignisbehandlung ein Klickereignishandler zugewiesen ist .Ist es wichtig? Wir können nicht sagen, weil wir nicht wissen, was der
...code..
tut.quelle
window
aber als erstes Argument an den Ereignishandler übergeben. Also brauchst du so etwas wiefunction yourHandler(event) { event = event || window.event; var target = event.target || event.srcElement; ...}
. Oder posten Sie den Code, in dem dies enthalten ist, wenn Sie weitere Hilfe benötigen.Im IE ist das Ereignisobjekt bereits im Fensterobjekt verfügbar. In Firefox wird es als Parameter im Ereignishandler ü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 feststellen, haben wir
event
beim Aufrufen der Funktion im HTML-Code einen Parameter hinzugefügt, falls der Browser Firefox ist.Ich habe in einem Artikel gelesen, dass das Ereignisobjekt im IE aufgerufen wird
window.event
und wir es in Firefox als Parameter einfügen müssen.Falls Sie es im Code anhängen 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 --> };
quelle
Versuchen Sie eine schnelle Lösung wie folgt:
In Code aufnehmen:
let target = event.target || event.srcElement;
und ändern
Dies löst das Problem mit Firefox.
quelle