Jquery 将图像添加到dom并执行.load
好吧,这很奇怪。 以下代码适用于所有浏览器,但在开发工具中将IE9更改为IE8时,IE9除外Jquery 将图像添加到dom并执行.load,jquery,image,load,Jquery,Image,Load,好吧,这很奇怪。 以下代码适用于所有浏览器,但在开发工具中将IE9更改为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-HelloWor
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;' });
var img=$('
以下是一个例子:
如您所见,当.load事件完成时(仅在IE8模式下)
没有将图像添加到dom中,而是发生了一些事情,整个屏幕变为白色(在JSFIDLE示例中,iframe变为白色)
花了好几个小时试图理解我的代码有什么问题(这是一个很长的JS文件…)
我设法把它放到$('.md').append(e.target);
行,但我不知道现在该怎么办。。。
这是我的错吗?这是JQuery的错吗?是IE8的错吗?
我能做些什么来解决这个问题
请注意,您必须处于IE8模式才能发生“bug”
编辑**
我只是想让它也在IE7模式下发生…在那些IEs中,e.target===document
和e.target
无论如何都不合适,您应该使用e.currentTarget
或this
那些较旧的IE使用srcement
,在本例中,它恰好是null
,在本例中,jQuery将其分配给文档
// Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)
if ( !event.target ) {
event.target = originalEvent.srcElement || document;
}
JQuery不应该处理这个问题吗?毕竟,CrossBrowser是他们的事情……还有,你是如何解决的?OriginaleEvent是未知的。@Dementric将它设置为document
,否则它将是null
。尽管。currentTarget
会比document
好,但我想他们已经做到了他们的理由?:Pbtw,即使由于将“e.target”更改为“this”来“修复”它,它也会破坏我的脚本的其余部分,就好像没有“.load”一样。@Dementic这很奇怪。jsfiddle工作正常。你能在jsfiddle中复制它吗?我让JCrop在其.load事件之后在该图像上运行。用“this”来修复它会使JCrop无法使用。