3

好的,所以这很奇怪。以下代码适用于所有浏览器,但在开发人员工具中将其更改为 IE8 时,IE9 除外。

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 模式才能发生“错误”。

编辑 ** 我只是这样它也发生在 IE7 模式下......

4

1 回答 1

1

在那些 IE 中,e.target === documentande.target无论如何都不合适,您应该使用e.currentTargetor this

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

那些较旧的 IE 使用srcElement, 在这种情况下恰好是nulljQuery 将其分配给document在这种情况下。

    // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)
    if ( !event.target ) {
        event.target = originalEvent.srcElement || document;
    }
于 2012-07-11T16:51:09.143 回答