javascript - 使用 setTimeout 全屏显示
问题描述
我有一个网页,我想让用户单击一个按钮并开始以全屏模式观看视频。但是,我不希望在单击按钮后立即播放视频。我希望它等待几秒钟,然后播放视频并全屏显示。为达到这个; 我已经像这样使用了 setTimeout 函数;
function startVideoAfterSecs(seconds){
setTimeout(() => {
this.activateFullscreen(); // function to go fullsreen
this.player.play();
}, seconds);
};
我知道没有用户交互就不可能全屏,应该有一些用户事件来触发它。这就是为什么,startVideoAfterSecs
绑定到按钮的onclick
事件。但是,我仍然收到错误消息;
未处理的拒绝(TypeError):全屏错误
我知道这个错误导致浏览器阻塞,因为它不接受它作为用户操作,因为setTimeout
正在使用该功能。有没有办法解决这个问题?
提前致谢。
解决方案
“
startVideoAfterSecs
绑定到按钮的onclick
事件”
但是不再是了,因为它们是从超时回调中调用的this.activateFullscreen()
。
但实际上这甚至不是问题,更多的是在一段时间后浏览器不会认为调用仍然来自用户交互,在 Chrome 中似乎是 5 秒左右,但它很可能随时发生变化。this.player.play()
对于play()
调用,您可以通过直接在 click 事件处理程序中调用它,然后尽快暂停来解决该问题。这会将 HTMLMediaElement 标记为用户激活的,并且您可以随时在其上调用 play。
但是,对于全屏模式,除了请求其他用户的交互,或者在给定的时间内完成之外,别无他法。
推荐阅读
- java - 在 Swing 中打印 10 中的数字 1-100
- python-3.x - python中的多个客户端和服务器没有线程
- vb.net - 将整个类标记为线程安全的,从而避免每个成员中的 SyncLock
- c# - 当标签具有值时弹出消息并出现第二种形式
- javascript - 如果对象未定义,则加载组件的最佳方式
- python - 如何使用官方 Python 客户端从 Pod 中查找同一节点上的所有 Kubernetes Pod?
- jquery - 以多阶段形式使用 Jquery 禁用选项卡的问题
- spring - Spring Boot 2.0.5 中来自 PrometheusPushGateway 的 @PreDestroy 注释的 BeanCreationNotAllowedException
- git - Git检测逻辑重复文件并失败合并
- php - 动态数组 php(在 relod php 表单后将数据附加到数组)