js动态改变img元素src在IE无效的问题

  做了个验证码功能,需要做个点击改变验证码图片的功能,使用js改变img的src,代码如下

$("#cerificationCodeImg").attr("src","common/image.jsp");

  image.jsp是用来生成验证码图片的,chrome下没有问题,IE下图片没有刷新,FF下也没有。搜索答案,在stackoverflow上找到了答案。链接如下:Dynamically change image src using Jquery not working in IE and firefox

  原回答如下:

  IE caching all GET request, so add a timestamp to your request URL e.g :

$(".linkEmail").click(function () {

        //Load captcha image

        $('.imgCaptcha').attr('src', '/Custom/AppCode/Utilities/CaptchaGenerator.ashx?'+new Date().getTime());


        $('#emailModal').modal();

    });

  大意是IE下会缓存什么的云云,不必深究,在后面把时间传进去就OK了,那我的js代码就相应改成了

	$("#cerificationCodeImg").attr("src","common/image.jsp?"+new Date().getTime());

 OK,在IE和FF都正常工作了。

补记:后来一位同学碰到类似的问题,但他的情况并不是去请求页面,只是用js动态的改变图片的src,src是直接用的静态图片,虽然服务器的图片已改,但是前台依旧显示旧图片,使用上面说的方法可以解决问题。套样上面的代码就是:

$("#cerificationCodeImg").attr("src","common/image.jpg?"+new Date().getTime());

  其实jsp页面和静态图片都属于url资源,据此推测,加timestamp的方法适用于任何使用url访问的资源缓存问题。

原文地址:https://www.cnblogs.com/ValiancyHe/p/3420394.html