0

我有一个表单,我在其中实现了 简单的验证码,每件事都运行良好,但我希望在用户单击播放按钮时播放音频验证码。在我的情况下,音频在页面加载时默认播放。

下面是我的音频验证码

public class MyAudioCaptcha extends AudioCaptchaServlet {

/**
 * 
 */
private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
    try {

        MyTextProducer myTextProducer  = (MyTextProducer) req.getSession().getAttribute("myTextProducer");
        if(myTextProducer == null){
            myTextProducer = new MyTextProducer();

        }
        AudioCaptcha ac = new AudioCaptcha.Builder().
                addAnswer(myTextProducer).
                addNoise().
                build(); // Required

                CaptchaServletUtil.writeAudio(resp, ac.getChallenge());
                req.getSession().setAttribute("audioCaptcha", ac);
    } catch (Exception e) {
        Util.AppendExceptionToLog(e);
    }

  }
}

JSP代码:

   <script>
        $(document).ready(function(){
            reloadCaptcha();
        });
      function reloadCaptcha(){
        var d = new Date();
        $.ajax({
          url:"captcha.jsp",
          type :"POST",
          async:true,
          data: { 
            'action':  'generateCaptcha' ,
          },
        success:function(response){
           $("#captcha_image").attr("src", "../../simpleCaptcha.png?"+d.getTime());
           $("#captcha_audio").attr("src", "../../audio.wav?"+d.getTime());

         },
     });    

    }
   </script>
<body>
    <td>
     <div class="inputfield" style="margin-left: 10px;">
        <img  id="captcha_image" /> 
        <img  src="../../images/reload.jpg" onclick="reloadCaptcha()" style="cursor: pointer;" alt="reload"width="30" height="30"/>
    </div>
   </td>
   <td>
        <audio controls autoplay  id="captcha_audio" autoplay = "false"></audio>
   </td>
</body>

上面的代码中是否有任何可配置的内容,以便在页面加载时不播放音频,仅在用户单击音频验证码时播放在此处输入图像描述

4

1 回答 1

0

您在标签中配置了autoplayand ,您应该删除它们。autoplay = "faluse"<audio>

自动播放属性是一个布尔属性。

当存在时,音频将立即自动开始播放而不会停止。

--来自 w3cschool

于 2016-12-19T14:23:55.903 回答