【问题标题】:Mute HTML5 video on subsequent visit下次访问时将 HTML5 视频静音
【发布时间】:2013-09-06 18:15:37
【问题描述】:

我正在使用 Reveal Modal (http://zurb.com/playground/reveal-modal-plugin) 在访问者第一次访问时触发模式弹出框,使用 jQuery Cookie (https://github.com/carhartl/jquery-cookie) 设置 cookie。

这是模态的代码(在移动设备上显示 GIF):

<div id="myModal" class="reveal-modal">
</div>

<script type="text/javascript">
    var isMobile = navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry)/);
    var myModal = document.getElementById('myModal');

    if(!isMobile) {
    // User-Agent is not IPhone, IPod, IPad, Android or BlackBerry
    myModal.innerHTML += '<video autoplay>' +
    '<source src="video/LogoOpening.mp4" type="video/mp4"/>' +
    '<source src="video/LogoOpening.ogg" type="video/ogg"/>' +
    '<source src="video/LogoOpening.webm" type="video/webm"/>' +
    '</video>' +
    '<a class="close-reveal-modal"><div class="button4">Close</div></a>';
    } else {
    myModal.innerHTML += '<img src="images/ThroughTheYears.gif" alt="Logo History" />' +
    '<a class="close-reveal-modal"><div class="button4">Close</div></a>' +
    '</div>';
    }
</script>

...这是在检查 cookie 后触发模式的 Javascript:

<script>
    $(document).ready(function() {
    if ($.cookie('modal_shown') == null) {
        $.cookie('modal_shown', 'yes', { expires: 30, path: '/' });
        $('#myModal').reveal({
         animation: 'fade',                         //fade, fadeAndPop, none
         animationspeed: 500,                       //how fast animtions are
         closeonbackgroundclick: true,              //if you click background will modal close?
         dismissmodalclass: 'close-reveal-modal'    //the class of a button or element that will close an open modal
         });
    }
    });
</script>

所以,问题来了:当我的访问者第一次出现时,视频会完美启动并自动播放,就像它应该的一样(类似的动画 GIF 在移动设备上播放仅);但是,视频有声音,在随后的访问中,视频会自动播放,您听到音频,但模态不会在视觉上触发(模态和视频保持隐藏状态)。

我认为解决方案是以某种方式将视频的静音属性与 cookie 检查 Javascript(确定模式是否触发)相关联,但我不确定如何编写代码。 帮助?

【问题讨论】:

  • 你不能在 JS 的第一部分检查$.cookie('modal_shown') == null,如果没有将视频设置为自动播放,但如果它已经显示,那么不要设置autoplay 和/或添加muted 属性
  • 这听起来是个好主意……现在我该如何编码呢? (请记住,上面的Javascript不是我自己写的,所以我在JS部门不是很厉害。):\

标签: javascript html video modal-dialog mute


【解决方案1】:

这样的东西应该可以工作

if (!isMobile) {
    // User-Agent is not IPhone, IPod, IPad, Android or BlackBerry
    if ($.cookie('modal_shown') == null) {
        myModal.innerHTML += '<video autoplay controls>'
    } else {
        myModal.innerHTML += '<video autoplay muted controls>'
    }
    myModal.innerHTML += '<source src="video/LogoOpening.mp4" type="video/mp4"/>' +
    ....
    ....
    '</video>' +

...为 cookie model_shown 添加额外检查允许您更改视频是自动播放,还是自动播放但静音(如果您不希望它自动播放,您可以删除它,在这种情况下也可能不需要静音。我还添加了controls,以便用户可以根据需要手动控制音量或播放/暂停

希望这会有所帮助(如果您需要的只是评论,我会尽量靠近)

【讨论】:

  • 感谢您的帮助!我将更新后的代码放在这里:jsfiddle.net/4jQZe 看看我哪里出错了,因为代码不起作用。我需要为移动设备保留 GIF 语句,但我不确定 JS 是否正确编写以支持它。
猜你喜欢
  • 1970-01-01
  • 2018-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-25
  • 2023-03-31
  • 2014-08-22
  • 1970-01-01
相关资源
最近更新 更多