一般用戶都知道,ios在網頁點擊視頻播放時,視頻會彈出全屏播放框。
video標簽的playsinline、webkit-playsinline標記根本就不會起作用。
還有傳聞說對於沒有聲音的視頻不會全屏播放,這個好像只有對IOS10版本才會生效吧(身邊沒有IOS10,沒有辦法測試)。因此這個傳聞也沒有什么用處。
我見過兩個庫成功使ios視頻在網頁行內播放,一個是canvasVideo、一個是iPhoneInlineVideo。
我試圖在這兩個庫中尋找啟發,看了下他們的源碼,canvasVideo沒看懂,在iPhoneInlineVideo中我算是找到關鍵。我自己總結的是用audio標簽作為驅動器,audio播放的同時修改video的currenTime
關鍵代碼(讓video標簽在ios網頁不會全屏播放)例子
audio.addEventListener('play', update, false);
audio.addEventListener('pause', cancelUpdate, false);
audio.play();
var animationFrame;
function cancelUpdate(){ cancelAnimationFrame(animationFrame); }
function videoUpdate(){ video.currentTime = audio.currentTime; }
function update(){ video.currentTime = audio.currentTime; animationFrame = requestAnimationFrame(update); }
這段代碼中有個缺陷,就是如何讓audio標簽在網頁中自動播放,微信瀏覽器是有辦法可以解決自動播放的問題,但是Safari暫時我沒有找到辦法