簡體   English   中英

HTML Image onload會觸發錯誤嗎?

[英]HTML Image onload triggers onerror?

我有一個標記為follow的html圖像

   <image src = 'image.png' onerror = "handleError(this)" onload = "handleLoad(this)">

    function handleError(n){
        getFirstChild(n.parentNode).style.display = '',n.style.display = 'none';
    }

    function handleLoad(n){
        getFirstChild(n.parentNode).style.display = 'none',n.style.display = '';
    }

我有一個單獨的函數getFirstChild但這與以下問題沒有任何關系。

基本上IE 11中發生的事情是onLoad處理程序被觸發,我的函數正在正確設置顯示,但是在onload被觸發后,onerror也會被觸發並覆蓋handleLoad函數所做的事情。 遺憾的是,這個應用程序僅在IE瀏覽器中受支持,但它只發生在IE11版本中,在IE10中這可以正常工作。

我不確定onLoad如何觸發,然后在onLoad從src找到圖像后立即觸發onError。

第二次編輯

正如下面的評論所述,我無法在IE11的jfiddle中重現這一點。 這可能是因為我的代碼試圖同時做的事情不同,但有沒有辦法看到為什么onerror處理程序被觸發? 我嘗試打印出Image項目的src,但這似乎不是問題,因為onError和onLoad都返回相同的src,圖像顯然就在那里。 無論如何,我可以看到導致onError觸發的原因是什么?

程序員使用window.onload事件來啟動他們的web應用程序.IE支持標簽的非常方便(但非標准)的屬性:defer。 此屬性的存在將指示IE在加載DOM之前推遲加載腳本。 但這僅適用於外部腳本。 另一個需要注意的重要事項是無法使用腳本設置此屬性。 這意味着您無法使用DOM方法創建腳本並設置defer屬性 - 它將被忽略。

使用方便的defer屬性,我們可以創建一個調用onload處理程序的迷你腳本:

<script defer src="ie_onload.js" type="text/javascript"></script>

這個外部腳本的內容將是一行代碼來調用我們的onload事件處理程序:

init();
function init() {
// quit if this function has already been called
if (arguments.callee.done) return;

// flag this function so we don't do the same thing twice
arguments.callee.done = true;

// do stuff
};

我們可以看到在IE中使用DOM事件處理程序存在許多問題,因此條件編譯可能是OP問題的另一個選擇。 恕我直言,你應該去這個鏈接:

http://dean.edwards.name/weblog/2005/09/busted/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM