Efficiently detect if a device will play silent videos that have the autoplay attribute

前端 未结 1 1575
不知归路
不知归路 2021-01-21 16:29

With Chrome 53 and iOS 10 both out now, there are now Android and iOS devices that are capable of automatically playing videos that are silent and have the autoplay

相关标签:
1条回答
  • 2021-01-21 17:15

    You can detect video autoplay support by checking if the paused status of a video element changes after it programmatically plays. This alone can return false negatives in some mobile browsers, so a Promise check should be added in order to cover these.

    This method works in all major browsers (desktop and mobile), except for Android <= 4.0 and Windows Phone, where it returns a false negative.

    Here is the detect function:

    var supports_video_autoplay = function(callback) {
    
      if (typeof callback !== "function") return false;
    
      var v = document.createElement("video");
      v.paused = true;
      var p = "play" in v && v.play();
    
      callback(!v.paused || ("Promise" in window && p instanceof Promise));
    
    };
    

    Usage:

    supports_video_autoplay(function(supported) {
      if (supported) {
        // video autoplay supported!
      } else {
        // no video autoplay support :(
      }
    });
    

    Live test: https://codepen.io/paulorely/pen/QveEGy

    0 讨论(0)
提交回复
热议问题