首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mozilla不会刷新音频标记文件。Mozilla的错误音频

Mozilla不会刷新音频标记文件。Mozilla的错误音频
EN

Stack Overflow用户
提问于 2012-11-17 18:27:07
回答 3查看 321关注 0票数 0

我有一段代码可以通过调用servlet自动生成验证码图像,并将其显示在HTML表单中。但对于视障人士,我也想放一个音频文件。因此,我将servlet生成的captcha代码存储为字符串形式的会话属性,并根据该属性再次根据captcha生成音频文件。因此,假设captcha是"c-a-t“,则相应地生成音频文件。现在的问题是,当我在Chrome中刷新页面时,验证码图像和音频都会被刷新,这是理想的,但在Mozilla中,只有图像而不是音频文件会被刷新。

代码语言:javascript
复制
    <div class="formRow">
                <div class="field">
                    <img style="margin-left:91px; margin-top:-6px;" class="image" src="http:www.xyz.com/captchaServlet"> 
         //the above line calls a servlet for the image       

                </div>
                </div></br>
                 <div class="formRow">
                      <div class="field">
                      <audio style="margin-left:91px;" controls="controls">
      <source  src="http:www.xyz.com/getSound" type="audio/wav">
//the above line calls servlet for audio file
    Your browser does not support this audio format.
    </audio>
                      </div>
             </div>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-17 18:33:07

它可能正在缓存url。只需使用它来使url唯一。

代码语言:javascript
复制
<source  src="http:www.xyz.com/getSound?rand=<?php echo rand(time()); ?>" type="audio/wav">
票数 1
EN

Stack Overflow用户

发布于 2012-11-20 08:17:39

当我尝试在window.onLoad函数中更改音频标签的来源时,它不起作用。然而,当我在body标记中编写脚本时,它就像一个护身符。这是我使用的:

代码语言:javascript
复制
<script type="text/javascript">
  if(navigator.userAgent=="Mozilla/5.0 (X19; Ubuntu; Linux i697; rv:10.0) Gecko/22222222 Firefox/16.0"){
    var d = new Date();
    var n = d.getTime();
    document.getElementById("audiowav").src="http://abcd.com/getSound?rand="+n;
  }
</script>

所以基本上我是从@Shahil那里得到这个想法的

票数 0
EN

Stack Overflow用户

发布于 2022-02-09 17:33:03

这是一个有趣的问题,通过解决这个bug可以学到很多东西。

首先,Mozilla Firefox无法找出在不同实例中点击的URL "http:abcd.com/getSound“之间的区别。例如,上午9:30的点击和上午9:31的点击对于Firefox没有任何区别,因为在两个实例中都请求了相同的URL。

解决这个问题的一个简单方法是在URL的末尾包含一个唯一的参数,以确保Firefox能够区分web请求。

代码语言:javascript
复制
<script type="text/javascript">
  window.onload = (event) => {
    var d = new Date();
    var n = d.getTime();
    document.getElementById("audiowav").src="http://abcd.com/getSound?rand="+n;
    };
</script>

添加这个on load JS函数将在每次加载页面后更改src URL,因为每次调用不同的URL,浏览器将不会在其缓存中找到新的URL,并将为每次相应的单击检索正确的音频文件。

这个解决方案与@Nick Div有99%的相似之处,尽管我的好奇心让我深入研究了更多细节。我仍然很想知道为什么这个问题只发生在Firefox中,而不是其他浏览器。一旦我找到答案就会回来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13429669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档