2013-03-20 12 views
6

Występuje problem podczas próby użycia następującego kodu. Działa doskonale w przeglądarkach Firefox, Safari, Chrome i IE 9 + 10, ale powoduje awarię pozostałej części mojej strony podczas uruchamiania w IE8. Otrzymany błąd konsoli to "niedopasowanie typu", a debugger wskazuje linię instrukcji IF. Waliłem głową o ścianę, próbując to rozgryźć, ale bezskutecznie. Czy ktoś ma pojęcie, co tu się dzieje?Niezgodność typu - 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

Czy możesz spróbować z nawiasami klamrowymi po instrukcji if? – DevelopmentIsMyPassion

Odpowiedz

19

writeIframe11092() wywołuje funkcję i zwraca wartość (undefined w tym przypadku) i przekazuje tę wartość do attachEvent.

writeIframe11092 to zmienna reprezentująca samą funkcję, tego właśnie chcesz użyć tutaj.

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

Moja ulubiona część dotycząca StackOverflow nie otrzymuje pomocy w rozwiązaniu problemu (chociaż jest to bardzo pomocne), ale zdobywa wiedzę, którą mogę zastosować do przyszłych problemów. Sposób, w jaki właśnie odpowiedziałeś na to pytanie, zwariował. Bardzo doceniam odpowiedź! – Minja

+0

@deniatus: Nie ma za co. Próbuję. :) Kiedy odpowiadam, lubię wyjaśniać, dlaczego metoda nie działała, nie tylko "tu jest właściwa odpowiedź" :) –

Powiązane problemy