// iOS Video Playback — playsinline & Autoplay

Toggle the attributes a <video> can carry, then press Reload to rebuild the element and play() to trigger playback. The event log shows what the browser actually did — including iOS's tell-tale fullscreen takeover when playsinline is missing.

Live video
idle

    
Attributes
Event log
What to expect
On a real iPhone: uncheck playsinline and press play() — the video jumps into the native fullscreen player (you'll see a webkitbeginfullscreen event logged). Re-check it to keep playback inline. Trên iPhone thật: bỏ playsinline rồi bấm play() — video sẽ nhảy sang trình phát toàn màn hình. Bật lại để phát nội tuyến.
Autoplay: on load it only works with muted + playsinline + autoplay all on. Uncheck muted and Reload — the play() promise rejects with NotAllowedError (logged in red) because unmuted autoplay needs a user gesture. Autoplay khi tải trang chỉ chạy khi bật cả ba: muted + playsinline + autoplay. Bỏ muted → promise của play() bị từ chối (NotAllowedError).
Low Power Mode: iOS blocks even muted autoplay when Low Power Mode is on. Always provide a tap-to-play fallback for the rejected promise. Chế độ tiết kiệm pin: iOS chặn cả autoplay đã muted. Luôn có nút chạm-để-phát dự phòng cho promise bị từ chối.