特征检测是否需要用户手势
有没有一种方法来检测是否允许在视频元素上调用play()
而无需用户手势? 在Android Chrome浏览器中会发出以下警告:
Failed to execute 'play' on 'HTMLMediaElement': API can only be initiated by a user gesture.
因此,在Chrome Android上,需要用户手势才能开始播放视频,而不是在桌面版Chrome上。 有没有办法来检测我会得到哪些行为?
我想在我的应用程序中具有稍微不同的行为,具体取决于是否允许以编程方式调用播放。
我曾尝试使用Modernizr.videoautoplay
,但它会检查元素上的autoplay
属性是否相同。 这给IE11和Edge带来了不利影响。
编辑:添加一个例子。 该视频将在Windows桌面上自动播放,并在Windows 8或10上自动播放IE11或Edge(延迟3秒)。对于Chrome @ Android,需要用户进行交互(单击该按钮),并在控制台中看到错误消息。
play方法返回一个可用于捕获错误的承诺。
并非所有的浏览器都遵循规范,因此您必须先检查返回的内容是否为承诺。
var autoPlayAllowed = true;
var promise = document.createElement("video").play();
if(promise instanceof Promise) {
promise.catch(function(error) {
// Check if it is the right error
if(error.name == "NotAllowedError") {
autoPlayAllowed = false;
} else {
throw error;
}
}).then(function() {
if(autoPlayAllowed) {
// Allowed
} else {
// Not allowed
}
});
} else {
// Unknown if allowed
}
链接地址: http://www.djcxy.com/p/88009.html