onclick javascript函数不适用于Firefox / IE

时间:2013-08-08 16:08:56

标签: javascript html button onclick reload

我的Captcha重装动作有问题。它适用于Chrome,但不适用于Firefox或IE。 有一个Captcha和一个按钮,我想刷新Captcha而不重新加载整个页面。如果我能得到一些帮助,我会很高兴。 使用javascript代码:

<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
        <link href='resources/styles.css' rel='stylesheet' type='text/css' />
        <title>...</title>
        <script language="javascript" type="text/javascript">
            function reloadCaptcha()
            {
                img = document.getElementById('captcha');
                img.src = 'resources/templates/captcha/Captcha.php';
            }
        </script>
    </head>

验证码和刷新按钮

<img src="resources/templates/captcha/Captcha.php" id='captcha'>
    <a href="#" onclick='javascript:reloadCaptcha();'>
        <img src="../backend/resources/media/captcha_refresh.png">
    </a>

4 个答案:

答案 0 :(得分:1)

我怀疑问题可能是缓存。您可以通过向新img src添加时间戳来解决此问题,如下所示:

function reloadCaptcha() {
    var img = document.getElementById('captcha'),
        timestamp = new Date().getTime();
    img.src = 'resources/templates/captcha/Captcha.php?' + timestamp;
 }

答案 1 :(得分:0)

你的语法不好。

选项1:

<a href="javascript:reloadCaptcha();">

选项2:

<a href="#" onclick='reloadCaptcha();'>

选项3:使用EventHandler API。

答案 2 :(得分:0)

除了避免缓存之外,还需要在onclick中返回false

<a href="#" 
onclick='reloadCaptcha(); return false'><img 
src="../backend/resources/media/captcha_refresh.png"></a>

答案 3 :(得分:0)

我在Firefox和Internet Explorer上遇到了同样的问题。我使用事件处理程序,我解决了我的问题。使用

evt.preventDefault(); 
return false;

在你的javascript函数中。