7

我正在为电子邮件实施验证码。单击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

4 回答 4

9

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

$(".linkEmail").click(function () {
   //Load captcha image
   $('.imgCaptcha').attr('src', '/Custom/AppCode/Utilities/CaptchaGenerator.ashx?'+new Date().getTime());
   $('#emailModal').modal();
});
于 2013-01-04T10:38:48.710 回答
1

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

于 2013-01-04T10:39:20.750 回答
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 图片。

于 2015-06-27T08:08:38.677 回答
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);
}

'theUrl' 用于渲染新的验证码图像,在您的情况下可以忽略。最重要的一点是生成新的 URL,它会强制 FF 和 IE 重新渲染图像。

于 2017-07-24T12:24:28.937 回答