ios - iOS如何在退出全屏后触发视频继续播放?
问题描述
我正在建立一个在 iOS 中播放视频的网站。我有一个在 iOS 中工作的全屏按钮,但是在退出全屏时视频会暂停。有谁知道一种方法来强制视频在退出全屏时继续播放,或者如何设置一个监听器来触发视频在退出全屏时自动播放?
这是我的代码:
<script>
var video = document.getElementById('tv'),
play = document.getElementById('fullscreenbutton'),
time;
video.addEventListener('webkitbeginfullscreen', function() {
play.innerText = '';
window.clearInterval(time);
});
video.addEventListener('webkitendfullscreen', function() {
tv.autoplay();
});
play.addEventListener('touchstart', function() {
time = window.setInterval(function() {
try {
video.webkitEnterFullscreen();
}
catch(e) {}
}, 250);
play.innerText = 'loading ...';
tv.play();
});
</script>
'''
解决方案
WKScriptMessageHandler
当点击退出全屏模式的按钮然后恢复视频播放器时,您可以在 iOS 应用程序中使用。这是我将如何处理这种情况的解决方法。
原生 iOS + JavaScript
1 Step:网站前端部分
当在您的网站上点击退出全屏按钮时,会发出一个事件,给它一个唯一的名称,例如“exitFullScreenEvent”
第 2 步:iOS 应用程序
import WebKit
ViewController: WKScriptMessageHandler {
// Helper method to set configurations for your webView in iOS
func configureWebView() {
///Add the script message handler into the content controller.
let contentController = WKUserContentController()
/// Give it the same name as on the web front-end part
contentController.add(self, name: "exitFullScreenEvent")
let config = WKWebViewConfiguration()
config.userContentController = contentController
/// Most important, when initilizing your web view pass the configuration above
let webView = WKWebView(frame: .zero, configuration: config)
// Layout/add constraints to your webView
// .....
}
// Delegate method to listen an event emitted from your website
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
// TODO: - Resume/ Play your video
}
}
纯网站(仅限 Javascript)
对于仅在没有任何 iOS 相关组件的纯 Javascript 中运行的网站以及在 Safari 浏览器上运行的网站,您可能需要检查这个webkitjs displayfullscreen 我以前没有使用过它,但值得阅读文档。
但是另一个不费吹灰之力的解决方法是将您的视频播放器的屏幕尺寸与浏览器的窗口尺寸进行比较,即..检查浏览器是否是全屏的,如果是,则获取全屏宽度,如果它与您的视频播放器的尺寸相同,那么视频是全屏。
推荐阅读
- azure - 维护天蓝色资源管理器模板的正确方法
- xml - XML 文件中的 Git 合并冲突
- c - 如何处理shell命令过滤器的逻辑链?
- php - 如何在 docker 中为 symfony 学说转储 sql
- c# - 创建一个新实例并覆盖该类
- svg - 具有使用 svg2pdf.js 生成的 Highcharts(多系列)图表的 PDF 引发错误
- angular - 使用 formArray 进行角度拖放
- javascript - 在 vue 中使用 ref 修改元素的样式会在切换路由中发送错误
- unity3d - unity:将黑色渲染为灰色
- sql-server - sql:列索引 0 上的扫描错误,名称“”:不支持扫描,将 driver.Value 类型 int64 存储到 *main.SMSBlast 类型中?