在 iOS Safari中假装自动播放 HTML5

5 篇文章 0 订阅
<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
		<title>Fake auto play html video in iOS Safari the right way</title>
	</head>
	<body>
		<h1>在 iOS Safari 中假装自动播放 HTML5</h1>
		<p>核心原理: 通过一个用户交互事件来主动 play 一下</p>
		<br>
		<br>
		<br>
		<video id="bgmusic" autoplay preload webkit-playsinline="true"playsinline="true" controls width='400' height = '400'></video>
		<script>
			(function() {
				function log(info) {
					console.log(info);
					// alert(info);
				}

				function forceSafariPlayVideo() {
					videoEl.load(); // iOS 9   还需要额外的 load 一下, 否则直接 play 无效
					videoEl.play(); // iOS 7/8 仅需要 play 一下
				}

				var videoEl = document.getElementById('bgmusic');

				// 可以自动播放时正确的事件顺序是
				// loadstart
				// loadedmetadata
				// loadeddata
				// canplay
				// play
				// playing
				// 
				// 不能自动播放时触发的事件是
				// iPhone5  iOS 7.0.6 loadstart
				// iPhone6s iOS 9.1   loadstart -> loadedmetadata -> loadeddata -> canplay
				videoEl.addEventListener('loadstart', function() {
					log('loadstart');
				}, false);
				videoEl.addEventListener('loadeddata', function() {
					log('loadeddata');
				}, false);
				videoEl.addEventListener('loadedmetadata', function() {
					log('loadedmetadata');
				}, false);
				videoEl.addEventListener('canplay', function() {
					log('canplay');
				}, false);
				videoEl.addEventListener('play', function() {
					log('play');
					// 当 audio 能够播放后, 移除这个事件
					window.removeEventListener('touchstart', forceSafariPlayVideo, false);
				}, false);
				videoEl.addEventListener('playing', function() {
					log('playing');
				}, false);
				videoEl.addEventListener('pause', function() {
					log('pause');
				}, false);

				// 由于 iOS Safari 限制不允许 audio autoplay, 必须用户主动交互(例如 click)后才能播放 audio,
				// 因此我们通过一个用户交互事件来主动 play 一下 audio.
				window.addEventListener('touchstart', forceSafariPlayVideo, false);

				videoEl.src = 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4';
			})();
		</script>
	</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值