Pregunta ¿Cómo puedo hacer que event.srcElement funcione en Firefox y qué significa?


hay una declaración if en el sitio web de mi empresa que hace que una página web sea incompatible con Firefox

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

He comentado las condiciones de la declaración if y ahora está trabajando con forefox. Mi pregunta es, ¿qué es event.srcElement.getAttribute ("onclick"), es importante, podría causar problemas en el futuro. Además, ¿hay algo similar que pueda reemplazar la condición para que funcione en Firefox?

Editar:

 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


origen


Respuestas:


srcElement es propiedad de propiedad originaria de IE. La propiedad estandarizada es target:

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

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

También eche un vistazo a quirksmode.org - Propiedades del evento para obtener más información sobre el navegador cruzado.


En cuanto a la pregunta, ¿qué está haciendo?

event.target / event.srcElement contiene una referencia al elemento event fue criado en. getAttribute('onclick') == null comprueba si un controlador de evento click está asignado al elemento a través de manejo de eventos en línea.

¿Es importante? No podemos decir porque no sabemos qué ...code.. está haciendo.


163
2018-03-14 16:49



En IE, el objeto de evento ya está disponible en el objeto ventana; en Firefox, se pasa como un parámetro en el controlador de eventos.

Ejemplo

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

Como notaron cuando llamamos a la función dentro del html, hemos agregado un parámetro event en caso de que el navegador sea Firefox.

He leído en un artículo que el objeto de evento en IE se llama window.event y en Firefox tenemos que ponerlo como un parámetro.

En caso de que necesite que se adjunte en el código:

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