Đang trả lời câu hỏi ...
Không, có những thuộc tính này là chưa đủ, để có thể tự động phát một phương tiện có âm thanh, bạn cần phải đăng ký cử chỉ người dùng trên tài liệu của mình.
Tuy nhiên, hạn chế này rất yếu: nếu bạn đã nhận được cử chỉ người dùng này trên tài liệu gốc và video của bạn được tải từ iframe, thì bạn có thể phát ...
Vì vậy, hãy lấy ví dụ như trò đùa này , chỉ
<video src="myvidwithsound.webm" autoplay=""></video>
Lúc đầu tải, và nếu bạn không nhấp vào bất kỳ đâu, nó sẽ không chạy, vì chúng tôi chưa có bất kỳ sự kiện nào được đăng ký.
Nhưng khi bạn nhấp vào nút "Chạy" , thì tài liệu gốc (jsfiddle.net) đã nhận được cử chỉ của người dùng và bây giờ video sẽ phát, mặc dù về mặt kỹ thuật nó được tải trong một tài liệu khác.
Nhưng đoạn mã sau, vì nó yêu cầu bạn thực sự nhấp vào nút Chạy đoạn mã , sẽ tự động phát.
<video src="https://upload.wikimedia.org/wikipedia/commons/transcoded/2/22/Volcano_Lava_Sample.webm/Volcano_Lava_Sample.webm.360p.webm" autoplay=""></video>
Điều này có nghĩa là quảng cáo của bạn có thể phát vì bạn đã cung cấp một cử chỉ người dùng cho trang chính.
Bây giờ, hãy lưu ý rằng Safari và Chrome dành cho thiết bị di động có các quy tắc nghiêm ngặt hơn thế và sẽ yêu cầu bạn thực sự kích hoạt ít nhất một lần play()
phương thức theo chương trình trên <video>
hoặc <audio>
phần tử từ chính trình xử lý sự kiện người dùng.
btn.onclick = e => {
// mark our MediaElement as user-approved
vid.play().then(()=>vid.pause());
// now we can do whatever we want at any time with this MediaElement
setTimeout(()=> vid.play(), 3000);
};
<button id="btn">play in 3s</button>
<video
src="https://upload.wikimedia.org/wikipedia/commons/transcoded/2/22/Volcano_Lava_Sample.webm/Volcano_Lava_Sample.webm.360p.webm" id="vid"></video>
Và nếu bạn không cần âm thanh, thì chỉ cần không đính kèm nó vào phương tiện của bạn, video chỉ có một đoạn video cũng được phép tự động phát và sẽ làm giảm mức sử dụng băng thông của người dùng.