1

我有一个通过 url 检索 src 的图像标签,例如:

<img src="http://localhost:2000/User/GetImage/1" />

该元素由 jQuery 生成,即:

this.updateImage  = function() 
{
    console.log("Change me!");
    var context = this;
    var imageSrc = webApiUrl + "User/GetImage/" + this._id;

    $("#ga-application-header .user-info-image").each(function()
    {
        $(this).empty();
        /* First try */$(this).append($("<img title='" + context._firstName + " " + context._lastName + "' />").attr("src", imageSrc));
        /* Second try*/$(this).append("<img title='" + context._firstName + " " + context._lastName + "' src='" + imageSrc + "' />");
    });
}

带有评论的那一行-第一次和第二次尝试-是我尝试实现这一目标的方式。

现在最重要的细节。加载页面时,调用此函数并显示图像。这行得通。但是如果我再次调用它(当用户更改它的图片时),图像不会在 IE 和 FF 中显示。仅在 Chrome 上。IE 和 FF 甚至不为其打开图像请求(在控制台的网络选项卡上)。请注意console.log文本“改变我!” 总是被调用。

4

3 回答 3

3

该问题是由浏览器缓存图像引起的。解决方法是将随机查询字符串附加到图像源。

于 2013-05-31T20:47:57.523 回答
3

首先,我倾向于使用以下模式而不是字符串连接。

var img = $('<img/>').attr('title',context._firstName).attr('src',imageSrc);
$(this).append(img);

其次,在您的 this.updateImage 中,您可以使用 console.log/dir(this),我猜您的上下文不正确,您可能想要做一个 var that = this,以检查您的引用。

于 2013-05-31T20:41:27.123 回答
1

我刚刚遇到了与 IE 相同的问题。

这帮助了我:

代替

$form.find( ".classname" ).append( content );

这适用于 IE 和所有其他浏览器:

$form.find( ".classname" ).html( $form.find( ".classname" ).html() + content );

希望它可以帮助这里的人......

于 2013-06-02T23:34:32.450 回答