我怎样才能让一个html视频播放一次,直到页面重新加载

2024-01-25

超级黑客!

所以我尝试并搜索了几个小时,但似乎无法找到解决方案。在我的页面上,当用户滚动到页面的某个点时,我将其设置为自动播放视频的位置。它效果很好,但我发现视频一遍又一遍地循环很烦人。我只希望视频只播放一次,直到用户重新加载页面或访问新页面并返回。然后视频可以再次播放。这就是我得到的!

HTML:

<video id="vid" width="400">
      <source src="assets/img/me.mp4" type="video/mp4">
        Your browser does not support HTML5 video. Please update your browser.
</video>

JavaScript:

$(window).scroll(function(){
    var myVideo = document.getElementById("vid");
    // console.log($(window).scrollTop());
    if($(window).scrollTop() > 300 && $(window).scrollTop() < 975){
        myVideo.play();
    }else{
            myVideo.pause();
    }
})

没什么特别的,非常简单。我知道循环有一个名为“loop”的 html5 属性,我不知道这是否是我的答案?在一些 HTML5 文档中看到循环属性和值 0 似乎是我正在寻找的?但不知道该怎么做?

值 0(默认):视频仅播放一次。

值 1:视频将循环播放(永远)。

预先感谢女士们先生们!我真的很感激你的时间。


默认值loop属性是false,所以不,这不是你的解决方案。

你的问题是你会打电话play()每次满足您的要求(滚动位置)时。

您需要的是检查视频是否已经播放,如果没有,则播放视频。
值得庆幸的是,有一个played https://developer.mozilla.org/en/docs/Web/HTML/Element/video#attr-playedvideo 元素上的属性将返回“指示已播放视频的所有范围的时间范围”。

所以你可以很容易地做到这样:

$(window).scroll(function(){
    var myVideo = document.getElementById("vid");

    if($(window).scrollTop() > 300 && $(window).scrollTop() < 975){
       if(myVideo.played.length === 0 )
          myVideo.play();
    }else{
            myVideo.pause();
    }
})

但正如您所注意到的,它只会播放视频一次,但在您暂停后不会重新开始播放,即使未到达结尾也是如此。
那么这种情况的解决方案就是在上面绑定一个flagonended视频事件:

// first attach the flag in the onended event
$('#vid').on('ended', function(){this.playedThrough = true;});

$(window).scroll(function(){
    var myVideo = document.getElementById("vid");

    if($(window).scrollTop() > 300 && $(window).scrollTop() < 975){
       // only if we didn't reached the end yet
       if(!myVideo.playedThrough)
          myVideo.play();
    }else{
       myVideo.pause();
    }
 })
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我怎样才能让一个html视频播放一次,直到页面重新加载 的相关文章

随机推荐

  • 单个 TextView 中的多个 TypeFace

    我想将第一个字符设置为TextView with a TypeFace以及具有不同类型面孔的第二个角色 依此类推 我读过这个例子 Spannable str Spannable textView getText str setSpan ne
  • 在 Symfony2 中测试文件上传

    在 Symfony2 文档中 它给出了一个简单的示例 client gt request POST submit array name gt Fabien array photo gt path to photo 模拟文件上传 然而 在我的
  • JPA - 我可以使用 @DiscriminatorValue 创建一个没有自己的表的实体类吗?

    我使用带有联合继承的 JPA 和如下所示的数据库结构 ACTION ACTION ID ACTION MAPPING ID ACTION TYPE DELIVERY CHANNEL ACTION ACTION ID CHANNEL ID O
  • WPF 交互触发器在样式中调用视图模型上的命令[重复]

    这个问题在这里已经有答案了 可能的重复 如何在样式设置器中添加混合行为 https stackoverflow com questions 1647815 how to add a blend behavior in a style set
  • 您可以使用类 C 语言对 FPGA 进行编程吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在大学里 我用类似 C 的语言编写了 FPGA 不过 我也知道人们通常使用 Verilog 或 VHD
  • 静态类必须从对象派生 (C#)

    我在 C 中遇到问题 输出状态为 Error 1 Static class WindowsFormsApplication1 Hello2 cannot derive from type System Windows Forms Form
  • Celery AttributeError:异步错误

    我在 Mac OS X 10 13 4 上本地运行 RabbitMQ 和 Celery 当我运行 add delay x y 时 以下代码在本地运行 usr bin env python from celery import Celery
  • SSH 和 -bash:fork:无法分配内存 VPS Ubuntu

    我在 Ubuntu 12 04 VPS Nginx Unicorn 上托管我的 Rails 应用程序 部署后一切正常 但几个小时后 当我 ssh 到 VPS 时 我收到此消息 bash fork Cannot allocate memory
  • 如何为谷歌地图设置自定义标记标题

    如何设置包含信息和按钮的样式自定义标记标题 片段 我已经有一个自定义标记图标图像集 现在我需要一个自定义弹出窗口 当用户点击标记时 该窗口将包含某些信息和一个按钮 这与我想要实现的目标很接近 自定义标题 片段示例 LatLng huduma
  • std::array 是可移动的吗?

    std array 是可移动的吗 In Bjarne Native 2012 演示幻灯片 http ecn channel9 msdn com events GoingNative12 GN12Cpp11Style pdf 幻灯片 41 列
  • 如何使用 firebug 检查 CSS 伪类?

    我正在与一种不情愿的挣扎a hover我无法覆盖的 css 样式 我尝试检查 Firebug 中的元素 但我不明白为什么它不起作用 我什至不知道如何正确检查a hoverFirebug 中的 CSS 事件 我见过 Firebug 中的悬停检
  • 错误:根:未找到哈希 md5 代码

    我在一台没有 root 访问权限的 Linux 机器上 我构建了自己的 openssl 和 python 本地副本 2 7 13 当我尝试在 python 中导入 hashlib 时 收到以下错误消息 gt python Python 2
  • 鼠标点击时 Div 隐藏/显示的问题

    我尝试了你的脚本 但它不能正常工作 我编辑了下面的代码以准确显示我正在使用的内容 非常感谢您的帮助 Quazi Hi 我对 JQuery 很陌生 我正在尝试获取一个 divfade in在点击事件之后然后hide单击任意位置后 我设置了三个
  • 什么是列存储索引以及与聚集索引和非聚集索引有何不同?

    我对列存储索引感到困惑 什么是列存储索引 它与聚集索引和非聚集索引有何不同 假设您有如下表col1作为主键 col1 PK col2 col3 1 2 3 4 5 6 普通索引将 按行 每行 存储 因此单个给定行的所有列都驻留在单个页面上
  • 如何在 IntelliJ Rider 中生成 API 控制器?

    在 Visual Studio 中 我可以通过选择 添加 在 Web API 项目中生成 API 控制器 控制器 从这个菜单中 我可以选择模型类 上下文类和控制器名称 并且按下按钮我可以生成数百行样板文件 我已转移到 IntelliJ Ri
  • GLSurfaceView.queueEvent不在GL线程中执行

    我正在尝试从我的主要活动中为我的 GLSurfaceView 执行一些 OpenGL 命令 由于 OpenGL 渲染器在它自己的线程中工作 我必须使用queueEvent 据我所理解 我正在打电话queueEvent在我的 GLSurfac
  • 计算 Spark 数据框中的单词数

    在不使用 SQL 的 REPLACE 函数的情况下 如何找到 Spark 数据帧的列中的单词数 下面是我正在使用的代码和输入 但 Replace 函数不起作用 from pyspark sql import SparkSession my
  • JQuery Flippy 插件未在点击事件上触发

    我有一个小问题flippy带有 jQ uery Flippy 插件的插件标签http blog guilhemmarty com flippy http blog guilhemmarty com flippy 我有一个 divp tag
  • 在内部类中执行main方法[重复]

    这个问题在这里已经有答案了 如果 main 方法存在于静态内部类中 如何执行它 Main 方法存在于静态内部类中 我们需要执行该 main 方法 class A static class B public static void main
  • 我怎样才能让一个html视频播放一次,直到页面重新加载

    超级黑客 所以我尝试并搜索了几个小时 但似乎无法找到解决方案 在我的页面上 当用户滚动到页面的某个点时 我将其设置为自动播放视频的位置 它效果很好 但我发现视频一遍又一遍地循环很烦人 我只希望视频只播放一次 直到用户重新加载页面或访问新页面