簡體   English   中英

將圖像添加到dom並執行.load

[英]adding an image to the dom and performing .load

好的,所以這很奇怪。 以下代碼適用於所有瀏覽器,但IE9在開發人員工具中將其轉換為IE8時除外。

var img = $('<img/>').load(function (e) {
    $('.md').append(e.target);
}).attr({ 'id': 'imgprofile', 'src': "http://upload.wikimedia.org/wikipedia/commons/thumb/2/28/HelloWorld.svg/512px-HelloWorld.svg.png", 'style': 'border:2px solid #a8a7a7;' });

這是一個例子: http//jsfiddle.net/RZeY5/5/

正如你所看到的,當.load事件完成(僅在IE8模式下)而不是將圖像添加到dom時,會發生一些事情並且整個屏幕變為白色(在jsfiddle示例中,iframe變為白色)。

花了幾個小時的時間試圖理解我的代碼有什么問題(這是一個非常長的JS文件....)我設法把它歸結為$('.md').append(e.target); 我不知道現在要做什么......這是我的錯嗎? 這是JQuery的錯嗎? 是IE8故障嗎? 我該怎么做才能解決這個問題?

請注意,您必須處於IE8模式才能發生'bug'。

編輯**我只是在IE7模式下發生...

在那些IE中,無論如何e.target === documente.target都不合適,你應該使用e.currentTarget或者this

http://jsfiddle.net/RZeY5/7/

那些較舊的IE使用srcElement ,在這種情況下恰好為null ,jQuery在這種情況下將其分配給document

    // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)
    if ( !event.target ) {
        event.target = originalEvent.srcElement || document;
    }

暫無
暫無

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

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