2009-06-06 4 views
7

Questo funziona in Firefox, ma non in IE. Qualsiasi aiuto sarebbe molto apprezzato! Grazie!Javascript Evento IE

var form = document.getElementById('theform') 
    /* create the event handler */ 
    form.gen.onclick = function(evt) { 
     var f = evt.target.form 
     var y = f.year.value 
     var m = f.month.value 
     genCalendar(document, y, m, 'theCalendar') 
    } 
+6

si dovrebbero terminare le istruzioni con ';' - l'implicito ';' alle terminazioni di riga è un meccanismo di fallback e io considererei l'utilizzo di una cattiva pratica (altre potrebbero non essere d'accordo) – Christoph

risposta

1

Come accennato, IE non passa l'oggetto evento come parametro. Prova questo:

var form = document.getElementById('theform') 
    /* create the event handler */ 
    form.gen.onclick = function(evt) { 
    if(!evt) 
     evt = window.event; 
    var f = evt.target.form 
    var y = f.year.value 
    var m = f.month.value 
    genCalendar(document, y, m, 'theCalendar') 
} 

O meglio ancora, utilizzare una libreria cross-browser, come Prototype.js o jQuery.

+0

inoltre, dovrete usare '.srcElement' o f '.target' in IE – Christoph

0

Ecco perché è consigliabile utilizzare una libreria javascript come jquery, YUI o prototipo. Queste librerie astraggono le differenze basate sul browser che semplificano la codifica.

15

Per ottenere l'obiettivo di un evento in entrambi gli standard browser conformi e IE, utilizzare

var target = evt ? evt.target : window.event.srcElement; 

C'è un overview of the different properties of event objects al MDC.

+0

Penso che dovrebbe essere:' var target = evt.target? evt.target: window.event.srcElement; ' – banana

1
  • Quando viene eseguito questo script? Potrebbe essere necessario eseguire questo script onload, dopo che il DOM è a pieno carico
 
<script> 

function go() 
{ 
    alert('dom is loaded: register event handlers now') ; 
} 

</script> 

<body onload=" go(); "> 



</body> 

0

Dalla mia ricerca la più sucessful era questo

function clickHandler(e){ 
var elem, evt = e ? e:event; 
if (evt.srcElement) elem = evt.srcElement; 
else if (evt.target) elem = evt.target; 

alert ('' 
    +'You clicked the following HTML element: \n <' 
    +elem.tagName.toUpperCase() 
    +'>' 
) 
return true; 
} 

document.onclick=clickHandler; 

provenienti da ther molto utile ed esplicativa http://www.javascripter.net/faq/eventtargetsrcelement.htm