使用Jquery在IE和Firefox中无法动态更改图像src

时间:2013-01-04 10:37:03

标签: javascript jquery

我正在为电子邮件实施验证码。点击linkEmail按钮时,电子邮件模式将会打开。 在点击linkEmail按钮点击时,我必须设置由处理程序(CaptchaGenerator.ashx)生成的验证码图像。这是代码。

$(".linkEmail").click(function () {
  //Load captcha image
  $('.imgCaptcha').attr('src', '/Custom/AppCode/Utilities/CaptchaGenerator.ashx');
  $('#emailModal').modal();
});

上面的代码在crome中正常工作,但在IE和Firefox中无法正常工作。 虽然我试过以下但没有运气。

HTML:

<p id="captchacontainerp" class="captchacontainer"></p>
-------------------------------------------------------------
$('#captchacontainerp').prepend($("<img id='imCaptcha' class='imgCaptcha' src='/Custom/AppCode/Utilities/CaptchaGenerator.ashx'></img>"));
-------------------------------------------------------------
var img = $('<img id="imCaptcha" class="imgCaptcha">');
img.attr('src', '/Custom/AppCode/Utilities/CaptchaGenerator.ashx');
$('#captchacontainerp').empty();
img.appendTo('#captchacontainerp');
---------------------------------------------------------------
$('#captchacontainerp').empty();
$('#captchacontainerp').append($("<img id='imCaptcha' class='imgCaptcha' src='/Custom/AppCode/Utilities/CaptchaGenerator.ashx'></img>"));

4 个答案:

答案 0 :(得分:8)

IE缓存所有GET请求,因此请在您的请求URL中添加时间戳,例如:

$(".linkEmail").click(function () {
   //Load captcha image
   $('.imgCaptcha').attr('src', '/Custom/AppCode/Utilities/CaptchaGenerator.ashx?'+new Date().getTime());
   $('#emailModal').modal();
});

答案 1 :(得分:1)

您是否尝试过再次更改之前将src属性设置为''? 此外,您正在使用的缓存设置是什么(本地和服务器上)

答案 2 :(得分:0)

如果指定任何内联样式属性,高度或宽度,如

<img src="themes/images/01.png" height="100" width="100" />
<img src="themes/images/01.png" style="height:100px; width=100px;" />
  

然后首先删除它并再试一次。

即使您使用样式标记外部指定样式,

  #imageId{
    height : 100px;
    width : 100px;
  }

然后首先删除它并尝试。 从图像中删除样式属性后,它将显示图像。

高度属性可能适用于IE,但宽度属性不起作用。

如果上述解决方案不起作用,则:      有时PNG文件也不会显示。因此,请尝试使用他们的JPG图像。

答案 3 :(得分:0)

尝试调用重新验证按钮时遇到了同样的问题。 经过一些搜索,现在功能在几乎所有着名的浏览器(chrome,Firefox,IE,Edge,...)中都能正常工作:

function recaptcha(theUrl) {
  $.get(theUrl, function(data, status){});
  document.getElementById("captcha-img").src = "";
  setTimeout(function(){
    document.getElementById("captcha-img").src = "captcha?"+new Date().getTime();
  }, 0);
}

&#39; theUrl&#39;用于渲染新的验证码图像,在您的情况下可以忽略。最重要的一点是生成新的URL,迫使FF和IE重新渲染图像。