我正在为电子邮件实施验证码。点击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>"));
答案 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重新渲染图像。