Mobile Safari HTML5 视频 - 事件侦听器“结束”不会第二次触发

2024-04-26

我正在尝试添加一个按钮,按下时将播放视频,并且当视频结束时显示图像。问题是,我第二次按下按钮时,视频结束,并且没有任何反应,就好像事件侦听器没有被调用一样。

var video = document.getElementById("video");

function playVideo() {
    video.style.display="block";
    //video.load() [adding this the 2nd time wont play]
    video.play();
    video.addEventListener('ended', videoEnd, false);
}

function videoEnd() {
    video.style.display="none";
    bg_image.src="image.jpg";
}

这是由于 Safari 的 HTML5 视频标记实现中的一个奇怪错误造成的。它也可以在 Windows 版 Safari 上重现。我刚刚找到了解决此问题的一种方法 - 只需绑定到loadedmetadata事件并设置currentTime到某个非零值。这是一个例子:

<!doctype html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.0.min.js"></script>
</head>
<body>
<video id="video" width="500" height="400" controls autoplay></video>
<script>
var src = [
 "http://content.adfox.ru/131007/adfox/205544/865991_11.mp4",
 "http://all.rutube.ru/130627/gpmdigital/217059/805529_11.mp4"
];
var curSrc = 0;
$(function() {
 $('#video').attr("src", src[curSrc % src.length]);
 curSrc++;
 var video = $('#video').get(0);

 $('#video')
 .on('loadedmetadata', function() {
  video.currentTime=0.01;
  video.play();
 })
 .on('ended', function() {
  console.log('ended');
  video.src = src[curSrc % src.length];
  video.load();
  curSrc++;
 });
});
</script>
</body>
</html>

你可以在这个 jsfiddle 中尝试这个演示:http://jsfiddle.net/j2knz6sv/ http://jsfiddle.net/j2knz6sv/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mobile Safari HTML5 视频 - 事件侦听器“结束”不会第二次触发 的相关文章

  • iOS 中文本区域上的 Shadow DOM 强制填充

    我遇到了一个让我有点困惑的问题 我对此问题的参考是 Mac 上的 Chrome 32 和 iOS 7 0 4 上的 Safari 在以下示例中 Chrome 将文本呈现在 background and textarea元素完美且相互叠加 这
  • 如何使用故事板将两个不同的选项卡栏图标连接到同一视图控制器?

    我的 iPad 应用程序中有一个标签栏控制器 包含 6 个项目 当您点击其中两个图标时 它们将指向同一个视图控制器 该视图控制器有一个将显示的项目列表 它会根据您点击的选项卡栏图标而略有变化 我如何用故事板来设置它 可以将关系两次拖动到同一
  • JavaScript 在模态窗口关闭时停止 HTML5 视频播放

    我在模态窗口上有一个 html5 视频元素 当我关闭窗口时 视频继续播放 我是 JS 的新手 有没有一种简单的方法将视频播放停止功能与窗口关闭按钮绑定 下面是我的html页面
  • 移动 Safari - 视口设备高度未按预期工作

    我有一个网络应用程序 我试图在 iPad 3 上运行 当我拉起它时 该应用程序允许垂直滚动 但实际上不应该 我已经对其他网络应用程序执行了相同的过程 没有任何问题 并且不确定这次我错过了什么 在我的 html 的 head 元素内 我有以下
  • 是否可以取消 NKAssetDownload?

    我在 App Store 上有一个杂志阅读器 我目前正在实现 NewsstandKit 功能 我的应用程序具有此下载工作流程 用户可以随时取消当前下载 我希望用户能够购买应用内产品 并以报刊亭后台下载的方式开始下载 杂志包含多媒体 因此它们
  • NSInternalInconsistencyException 无法加载 nib ind 包

    我正在为 iPad 开发一个应用程序 该应用程序具有以下详细信息 基础 SDK 4 2 部署目标 3 2 该应用程序是一个游戏应用程序 有 10 轮 在每一轮中 我加载 6 个控制器 并且在每一轮完成后 相同的循环再次开始 该应用程序在 4
  • 在 JavaScript 中,是否可以检测 Android 和 iOS 浏览器中的屏幕何时关闭

    我正在跟踪我的应用程序的 javascript 报告的一些高得离谱的加载时间 并发现当窗口位于后台或显示屏关闭时 Android 和 iOS 会暂停一些 JavaScript 执行 在Android上 我发现我可以使用window onfo
  • 如何为 iOS 构建 PoDoFo 库

    这可能是这个问题的副本如何在 iOS 上使用 PoDoFo 库对 PDF 进行注释 https stackoverflow com questions 7643771 how can i use the podofo library for
  • 如何将基于 Qt4.6 Phonon 的媒体应用程序移植到 Qt 5.1?

    我有一个基于 Qt 4 6 的应用程序 它使用 QtWebView 加载带有标签的 HTML 页面 以便在 Windows 平台上播放网络多媒体源 我没有使用默认的 PHONON 播放引擎 而是构建了另一个 PHONON 后端引擎来处理媒体
  • 好的 iPad SplitViewController 教程吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是 iOS 开发新手 正在尝试学习如何使用 iPad 的 splitViewController 我在
  • 滚动播放 Html5 视频

    我正在一个 WordPress 网站上工作 下面的代码可以按照我想要的方式工作 只播放一次 最后出现 重播 按钮 我希望它在滚动到 ie 时开始播放 在视口中 我在这里看到了几种不同的方法来实现这一点 但我无法让它们与我当前的代码很好地配合
  • Xcode:如何创建出现在另一个视图控制器中的弹出视图控制器

    基本上我想做的是 假设我有一个名为 V1 的视图控制器 它内部有一个常规视图和一个按钮 现在 当您点击该按钮时 我希望该按钮创建一个操作 在同一视图控制器 V1 中弹出另一个名为 V2 的视图控制器 V2 的尺寸会缩小一些 使其不会填满整个
  • ipad 2相机支持检测

    我有一个使用以下宏的应用程序 define IS IPAD UIDevice currentDevice respondsToSelector selector userInterfaceIdiom UIDevice currentDevi
  • 第一响应者设置不正确

    我有一个分组表视图 并尝试在用户按 Enter 时将新的第一响应者设置为文本字段 这对我来说不是什么新鲜事 在我进行一些不相关的更改之前我的代码可以工作 但现在却不能了 当我设置第一响应者时 我有一个指向正确文本字段的指针 但没有任何反应
  • iPhone Mobile Safari,最大并行 http 连接数是多少?

    我想在 iPhone Mobile Safari OS4 中使用并行 AJAX HTTP 请求 最大并行连接数是多少 如果我没记错的话 Safari 最多使用 4 个到同一服务器的连接 但您可以使用以下命令自行测试这个小测试用例 http
  • HTML5:从存储的二进制字符串播放视频

    我正在尝试使用 FileReader readAsBinaryString Blob File 将视频文件的内容作为二进制字符串读取 如示例中所示http www html5rocks com en tutorials file dndfi
  • 场景 - 根据 iPad 或 iPhone 使用专用故事板

    Apple 现在希望我们使用 场景 而不是窗口和屏幕来显示 iPad 和 iPhone 的内容 现在添加了对场景的支持 我似乎失去了使用故事板定位 iPad 或 iPhone 的能力 I set my scenes inside plist
  • iphone总是返回UIInterfaceOrientationPortrait

    我需要确保当我的UIViewController负载 它根据需要旋转 我已经实施了shouldAutorotateToInterfaceOrientation方法及其所有工作正常 除非应用程序首次加载时 当 iphone 处于横向模式时 或
  • 模拟器中缺少“Web Inspector”设置

    在模拟器上执行 重置所有内容和设置 后 在 safari 中启用 Web 检查器的设置消失了 我不知道如何恢复它 有谁知道如何恢复它 并再次在模拟器中 远程 调试网页 似乎这个选项在模拟设备中不可用 提示 如果您想从桌面 Safari 连接
  • Apple 应用程序加载器 - 如何更改正在使用的 Apple ID?

    我想切换 Apple App Loader 使用的 Apple ID 我找不到更改应用程序本身使用的帐户的方法 谷歌搜索没有带来任何有用的信息 当我启动加载程序应用程序时 它给我一个错误 您的 Apple ID 或密码输入不正确 20101

随机推荐

  • 如何在 Swift/Cocoa 应用程序中获取 HID 设备列表?

    以下代码可以完美地获取已连接的 HID 设备的列表 import Foundation import IOKit import IOKit usb import IOKit hid private func createDeviceMatc
  • 以编程方式将焦点设置在 Vuetify 中的按钮上

    我试图在每次打开 v 对话框时将操作按钮集中在 v 对话框中 我尝试使用自动对焦 但它只能工作一次 通常在 Vuetify 中 您可以通过添加引用然后调用 focus 函数来将焦点设置在元素上 如下所示
  • ggplot 具有多个回归线以显示随机效应

    我知道this https stackoverflow com a 12281663 4089351 and this https stackoverflow com a 25753089 4089351帖子 但是 当我尝试以下操作时 我似
  • Service Fabric:删除了参与者,现在升级失败

    我正在尝试混合使用有状态和无状态参与者来升级 Service Fabric 应用程序 我做了一些重构 因此删除了一些我不再需要的演员 现在 当我尝试升级应用程序时 出现以下错误 在删除服务类型之前 必须显式删除服务 经过一番思考后 我thi
  • 确定脚本所在的服务器以及 PHP 中的配置的最佳方法是什么?

    我正在尝试确定让 PHP 脚本确定脚本 站点当前在哪个服务器上运行的最佳方法 目前我有一个switch 使用 SERVER SERVER NAME SERVER SERVER PORT 以确定它位于哪个服务器上 然后 它根据其所在的服务器设
  • 适用于 IIS 的 Windows PowerShell 管理单元在 32 位上失败?

    我正在尝试编写一个 PowerShell 脚本来自动执行 IIS 网站部署 我尝试在 Windows Server 2008 R2 计算机上运行脚本 32 位 C Windows SysWOW64 WindowsPowerShell v1
  • CSS 渐变内容很少:修复了 Chrome 的问题

    我问了一个问题内容很少的 CSS 渐变 https stackoverflow com questions 4873150 css gradients with little content前段时间 我想出了一个可能的解决办法http js
  • 我可以取消选中组框中的一组 RadioBottom 吗?

    组 Box 内的单选底部将被视为一组底部 它们是互斥的 我怎样才能清理他们的检查状态 我有几件收音机底部 其中一件经过检查 我怎样才能 清洁 取消选中 所有收音机底部 setChecked 在组内不起作用 我尝试做以下事情但失败了 我的代码
  • Android 导航组件弹出转换问题

    我有2个行动 Action1
  • Kendo UI - observable、ObservableObject 和 Model 之间的区别

    observable ObservableObject 和 Model 之间有什么区别 谢谢 Model继承自ObservableObject 而ObservableObject又继承自Observable 可观察的 http docs k
  • 将外键添加到 AspNetUser 表

    我创建了一个具有用户身份的 ASP NET Core Razor Pages 应用程序 创建的项目包括添加所有用户表的迁移 例如AspNetUser and AspNetRoles 但是 它不会为这些表创建任何代码模型 现在我已经创建了自己
  • didSelectRowAtIndexPath:没有被调用

    我有一个UITableView作为我的子视图UIScrollVIew 这是我控制的主视图MainViewController 在MainViewController h中 interface MainViewController UIVie
  • Java,声明具有多个接口的变量?

    在Java中 是否可以声明一个类型为多个接口的字段 变量 例如 我需要声明一个Map那也是Serializable 我想确保变量引用可序列化的映射 这Map接口不扩展Serializable 但大多数Map的实现是Serializable
  • 如何禁用浮点单元(FPU)?

    我想在 x86 系统中禁用 FPU MMX SSE 指令 并且我将为设备不可用异常实现一个处理程序 我已经提到过控制寄存器 wiki 页面 http en wikipedia org wiki Control register 看来我必须在
  • Mysql 使用搜索字符串排序

    我有一个 mysql 查询 例如 select from employee where name like ani 我希望我的结果以 ani 开头排序 例如 我的结果应该是 anil anirudha rani 首先以 ani 开头 然后是
  • 服务器传输与服务器传输响应.重定向

    有什么区别Server Transfer and Response Redirect 各自的优点和缺点是什么 什么时候其中一种比另一种更合适 什么时候不合适 Response Redirect只需发送一条消息 HTTP 302 http e
  • Python边缘检测和曲率计算

    我知道边缘检测问题之前已经发布过 在Java中 计算图像中对象的数量 https stackoverflow com questions 2952165 count the number of objects in an image 与语言
  • 如何将 iframe 转换为画布?

    我正在尝试将所有内容作为图像保存到另一个页面中 我已经探索了执行此操作的方法 因此我认为我需要首先将该页面转换为画布 因此 我尝试使用要先将其保存为 iframe 的链接 然后将 iframe 转换为画布 但它不起作用 document r
  • CSS,悬停一个元素,影响另一个元素

    当我将鼠标悬停在 li a 上时 我可以影响普通 CSS 中的另一个元素吗 因为我试图在悬停链接时将一个框作为背景元素滑入 与此网站导航完全相同 只是不是在激活时使用 而是通过悬停来使用 http www zindhai com http
  • Mobile Safari HTML5 视频 - 事件侦听器“结束”不会第二次触发

    我正在尝试添加一个按钮 按下时将播放视频 并且当视频结束时显示图像 问题是 我第二次按下按钮时 视频结束 并且没有任何反应 就好像事件侦听器没有被调用一样 var video document getElementById video fu