解决浏览器播放音频声音,没交互前不播放问题

embedded/2025/2/7 7:53:44/

方法一:通过显示“需要播放音频”弹窗,进行交互之后播放。

javascript"> <audio ref="audioRef"><source src="./mp3/tishi.mp3" /></audio><script setup>import { ref } from 'vue'let audioRef = ref(null)onMounted(() => {if (window.performance.navigation.type === 1) {//重新加载audioClick()} else {handelShow()}})const audioClick = () => {let startPlayPromise = audioRef.value.play()if (startPlayPromise !== undefined) {startPlayPromise.catch(error => {if (error.name === 'NotAllowedError') {// 弹窗引导用户与页面做交互,只需要一个简单的按钮即可// 记得在按钮上绑定一个带有play()方法的回调函数,以element-plus的组件为例ElMessageBox.alert('当前正在自动播放音频', '提示', {confirmButtonText: '确认',callback: () => {audioRef.value.play()},})}})}}const handelShow = () => {audioRef.value.play()}
</script>

方法二:通过监听页面点击事件,页面有交互之后播放。

javascript"> data() {return {initIntervalPlay:null,firstPlayVid: true,}},mounted() {const audio =document.getElementById("videoSound");let startPlayPromise = audio.play();if (startPlayPromise !== undefined) {//判断 首次进入用户没交互时,无法播放问题startPlayPromise.catch((error) => {document.removeEventListener('click', this.playHandle)document.addEventListener('click', this.playHandle)}).then(() => {this.intervalPlay()});}
}playHandle() {if (this.firstPlayVid) {document.getElementById("videoSound").play()this.intervalPlay()this.firstPlayVid = false}},//循环播报提示音intervalPlay(){if (this.initIntervalPlay) {window.clearInterval(this.initIntervalPlay)}this.initIntervalPlay = setInterval(() => {document.getElementById("videoSound").play()}, 5000)}

http://www.ppmy.cn/embedded/160236.html

相关文章

想品客老师的第十二天:异步和promise

js的异步编程写在这里 异步 举个例子&#xff1a;加载图片是个需要事件才能完成的事情&#xff0c;js位单线程&#xff0c;为了避免阻塞主线程&#xff08;为了避免图片一直加载看不见后面的东西&#xff09;&#xff0c;可以使用异步操作 异步加载图片&#xff1a; functio…

深度学习 Pytorch 神经网络的学习

本节将从梯度下降法向外拓展&#xff0c;介绍更常用的优化算法&#xff0c;实现神经网络的学习和迭代。在本节课结束将完整实现一个神经网络训练的全流程。 对于像神经网络这样的复杂模型&#xff0c;可能会有数百个 w w w的存在&#xff0c;同时如果我们使用的是像交叉熵这样…

订单状态监控实战:基于 SQL 的状态机分析与异常检测

目录 1. 背景与问题 2. 数据准备 2.1 表结构设计 3. 场景分析与实现 3.1 场景 1:检测非法状态转换

GitHub Copilot 越狱漏洞

研究人员发现了两种操控 GitHub 的人工智能&#xff08;AI&#xff09;编码助手 Copilot 的新方法&#xff0c;这使得人们能够绕过安全限制和订阅费用、训练恶意模型等。 第一种技巧是将聊天交互嵌入 Copilot 代码中&#xff0c;利用 AI 的问答能力&#xff0c;使其产生恶意输…

LiteDB 使用教程

一、引言 在软件开发中&#xff0c;数据存储和管理是至关重要的一环。对于小型项目或者对性能和便捷性有较高要求的场景&#xff0c;传统的大型数据库可能显得过于笨重。而 LiteDB 作为一款轻量级的嵌入式 NoSQL 数据库&#xff0c;为开发者提供了一个简洁、高效的解决方案。它…

《机器学习数学基础》补充资料:秩-零化度定理

在拙作《机器学习数学基础》中&#xff0c;对于机器学习直接相关的线性代数的内容做了比较详细的讲解&#xff0c;但是&#xff0c;由于书中是以“机器学习”为核心&#xff0c;而非“线性代数”&#xff0c;所以对其中的更基本的内容没有深入探究。为了让有兴趣深入学习的读者…

图论- DFS/BFS遍历

DFS/BFS遍历 深度优先搜素(DFS)Vertex模版 - 遍历所有节点为什么成环会导致死循环呢临接矩阵和临接表版 - 遍历所有节点遍历所有路径 - 临接矩阵和临接表版 广度优先搜索(BFS)不记录遍历步数的需要记录遍历步数的需要适配不同权重边的 深度优先搜素(DFS) Vertex模版 - 遍历所有…

Ruby Dir 类和方法详解

Ruby Dir 类和方法详解 引言 在Ruby编程语言中&#xff0c;Dir类是一个非常有用的工具&#xff0c;它允许我们与文件系统进行交互&#xff0c;如列出目录内容、检查文件是否存在等。Dir类提供了多种方法&#xff0c;使得文件系统的操作变得简单且高效。本文将详细介绍Ruby中的…