博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
audio 标签自动播放不起作用或者 play() 报错
阅读量:3738 次
发布时间:2019-05-22

本文共 756 字,大约阅读时间需要 2 分钟。

audio 标签自动播放不起作用或者 play() 报错

问题描述

    页面的 audio 标签设置了自动播放属性,进入页面自动播放不起作用,或者用 js 控制 play(),方法无效,报错!

解决方案

经过各种百度,谷歌,追踪到原因如下:

页面必须进行交互才能进行对 audio 播放;

声音无法自动播放这个在IOS/Android上面一直是个惯例,桌面版的Safari在2017年的11版本也宣布禁掉带有声音的多媒体自动播放功能,紧接着在2018年4月份发布的Chrome 66也正式关掉了声音自动播放,也就是说自动播放在在桌面版浏览器也将失效;

如Android Chrome文档提到。因此浏览器厂商放开了对多媒体自动播放的限制,只要具备以下条件就能自动播放:

(1)没音频轨道,或者设置了muted属性

(2)在视图里面是可见的,要插入到DOM里面并且不是display: none或者visibility: hidden的,没有滑出可视区域。

换句话说,只要你不开声音扰民,且对用户可见,就让你自动播放,不需要你去使用GIF的方法进行hack.桌面版的浏览器在近期也使用了这个策略;

所以上面提到很多人是监听整个页面的点击事件进行播放,不管点的哪里,只要点了就行,包括触摸下滑。这种方法只适用于一个声音资源,

原文:https://blog.csdn.net/yang450712123/article/details/84866611 
 

在网站有订单提醒的提醒声音,css自动给audio增加了display:none,结果播放时报错:

Uncaught (in promise) DOMException: play()

我是加了个controls="controls"把audio 放在页面下面

解决!

你可能感兴趣的文章
MySql的事务(Transaction)
查看>>
MySql中的索引
查看>>
MySql的视图和DBA的命令
查看>>
MySql数据库设计三范式
查看>>
复杂邮件的发送(添加附件)
查看>>
PowerDesigner16.5安装
查看>>
jdbc的概念
查看>>
jdbc执行DML(insert、update、delete)编程举例
查看>>
jdbc执行DQL(select)编程及遍历举例
查看>>
jdbc中Statement接口实现CRUD操作(了解)
查看>>
jdbc中PreparedStatement替换Statement实现CRUD与Blob类型的操作
查看>>
JDBC中数据库的事务
查看>>
jdbc中首次了解DAO及其子类
查看>>
jdbc中的数据库连接池
查看>>
jdbc中DBUtils提供的jar包(QueryRunner)实现CRUD操作
查看>>
MVVM模式与第一个Vue程序
查看>>
jdbc中PreparedStatment通用增删改查
查看>>
jdbc中PreparedStatment实现高效的批量插入
查看>>
jdbc中考虑事务的通用增删改查
查看>>
jdbc中的行级锁(悲观锁)和乐观锁
查看>>