2013-03-20 25 views
6

Si è verificato un problema durante il tentativo di utilizzare il seguente codice. Funziona perfettamente in Firefox, Safari, Chrome e IE 9 + 10, ma fa sì che il resto della mia pagina si blocchi quando viene eseguito in IE8. L'errore della console che ricevo è 'tipo non corrispondente' e il debugger punta alla riga dell'istruzione IF. Ho sbattuto la testa contro il muro cercando di capirlo, ma senza successo. Qualcuno ha idea di cosa diavolo sta succedendo qui?Tipo non corrispondente - JavaScript

function writeIframe11092() 
{ 
    alert("BEFORE"); 
    document.write('<iframe style=\"position:absolute;left:-40000px;\" src=\"https://mydomain.com/images/close.gif\" ></iframe>'); 
    alert("AFTER"); 
} 

if (window.attachEvent) 
    window.attachEvent('onload', writeIframe11092()); 
else if (window.addEventListener) 
    window.addEventListener('load', writeIframe11092(),false); 
+1

Si può provare con parentesi graffe dopo istruzione if? – DevelopmentIsMyPassion

risposta

19

writeIframe11092() chiama la funzione e restituisce un valore (undefined in questo caso), e passa il valore al attachEvent.

writeIframe11092 è una variabile che rappresenta la funzione stessa, è ciò che si desidera utilizzare qui.

if (window.attachEvent){ 
    window.attachEvent('onload', writeIframe11092); 
} 
else if (window.addEventListener){ 
    window.addEventListener('load', writeIframe11092, false); 
} 
+2

La mia parte preferita su StackOverflow non sta ricevendo aiuto per risolvere un problema (anche se è molto utile) ma sta acquisendo la conoscenza che posso applicare a problemi futuri. Il modo in cui hai appena risposto a questa domanda mi ha fatto impazzire. Apprezzo molto la risposta! – Minja

+0

@deniatus: prego. Cerco. :) Quando rispondo, mi piace spiegare perché il metodo provato non funzionava, non solo "ecco la risposta giusta" :) –

Problemi correlati