2013-03-20 147 views
6

嘗試使用以下代碼時遇到問題。它在Firefox,Safari,Chrome和IE 9 + 10中運行完美,但導致我的頁面在IE8中運行時「崩潰」。我收到的控制檯錯誤是'類型不匹配',調試器指向IF語句行。我一直在試圖弄清楚牆上的撞牆,但無濟於事。有沒有人知道這裏發生了什麼?類型不匹配 - 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

你可以在if語句後用大括號嘗試嗎? – DevelopmentIsMyPassion 2013-03-20 21:04:33

回答

19

writeIframe11092()調用函數和(在這種情況下undefined)返回一個值,並將該值attachEvent

writeIframe11092是一個代表函數本身的變量,這就是你想要在這裏使用的。

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

我最喜歡的關於StackOverflow的部分沒有得到解決問題的幫助(儘管這非常有幫助),但獲得了可應用於未來問題的知識。你剛纔回答這個問題的方式讓我失望了。非常感謝答案! – Minja 2013-03-21 12:07:01

+0

@deniatus:不客氣。我試試。 :)當我回答時,我想解釋爲什麼該方法嘗試不起作用,而不僅僅是「這裏是正確答案」:) – 2013-03-21 14:28:50