2011-03-14 6 views
71

no es una sentencia if en la página web de mi empresa que fabrica una página Web imcompatible con Firefox¿Cómo puedo hacer que event.srcElement funcione en Firefox y qué significa?

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

he comentado a cabo si las condiciones de los estados y ahora su trabajo 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(); 
     } 
    } 
+2

Una rápida búsqueda en Google de "event.srcElement" dio [esta explicación y la solución] (http://forums.mozillazine.org/ viewtopic.php? f = 25 & t = 821675). –

Respuesta

151

srcElement es propiedad patentada originalmente proveniente de IE. La propiedad está estandarizada target:

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

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

también echar un vistazo a quirksmode.org - Event properties para más información navegadores.


En cuanto a la cuestión de lo que está haciendo:

event.target/event.srcElement contiene una referencia al elemento de la event se elevó sucesivamente. getAttribute('onclick') == null comprueba si un controlador de evento click está asignado al elemento a través del inline event handling.

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

+0

Gracias por ese felix, sin embargo, sigo recibiendo un error de javascript "el evento no está definido [Break On This Error] var target = window.event.target || event.srcElement;" any idea why? – code511788465541441

+1

@ user521180: en todos los demás navegadores, el evento no está disponible a través de la 'ventana', sino que se pasa como primer argumento al controlador de eventos. Entonces necesitas algo como 'function yourHandler (event) {event = event || window.event; var target = event.target || event.srcElement; ...} '. O publique el código donde está contenido si necesita más ayuda. –

+0

He editado la publicación original para incluir toda la función – code511788465541441

5

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 se nota cuando llamamos a la función dentro del html, hemos añadido un parámetro event por si acaso el el navegador es 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 parámetro.

En caso de que necesite su fijación 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 --> 
}; 
+1

Gracias por el Editar iam simplemente nuevo aquí :) gracias de nuevo – Marwan

+0

¿Qué pasa si ya está pasando otro valor a esta función? ¿Simplemente agrega "evt" como el segundo parámetro? ¿Cómo sabe Javascript entonces qué parámetro es el objeto del evento? ¿Tiene que ser el primer parámetro? o el último? – Vincent

Cuestiones relacionadas