vue音频(监听播放完成)
<template>
<div>
<audio ref="audio" :src="audioSrc"></audio>
<button @click="playAudio">播放</button>
<button @click="changePlaybackRate(1.5)">加速</button>
<button @click="changePlaybackRate(0.5)">减速</button>
</div>
</template> <script>
export default {
data() {
return {
audioSrc:
"https://dashanbook.oss-cn-shenzhen.aliyuncs.com/av/2023/12/04/537a6f61f94344979789779e25ea5f61.mp3",
endedListener: null, // 保存事件监听器
};
},
methods: {
playAudio() {
const audio = this.$refs.audio;
audio.play();
// 如果存在旧的 ended 事件监听器,需要先将其移除
if (this.endedListener) {
audio.removeEventListener("ended", this.endedListener);
}
// 保存新的事件监听器
this.endedListener = () => {
// 音频播放完成后的操作,可以返回一个东西
// 使用 Promise 来返回结果
this.someFunction().then((result) => {
console.log(result);
});
// 移除事件监听器
audio.removeEventListener("ended", this.endedListener);
};
// 在音频上添加事件监听器
audio.addEventListener("ended", this.endedListener);
},
changePlaybackRate(rate) {
this.$refs.audio.playbackRate = rate;
},
someFunction() {
return new Promise((resolve) => {
// 在这里执行需要返回的操作(监听音频播放完成)
resolve("返回的东西");
});
},
},
mounted() {
// 在组件挂载时添加事件监听器
const audio = this.$refs.audio;
audio.addEventListener("ended", this.endedListener);
},
destroyed() {
// 在组件销毁时移除事件监听器
const audio = this.$refs.audio;
audio.removeEventListener("ended", this.endedListener);
},
};
</script>
vue音频(监听播放完成)的更多相关文章
- vue时时监听input输入框中 输入内容 写法
Vue input 监听 使用 v-on:input="change" 实现即可 App.vue <template> <div> <md-field ...
- Vue 事件监听实现导航栏吸顶效果(页面滚动后定位)
Vue 事件监听实现导航栏吸顶效果(页面滚动后定位) Howie126313 关注 2017.11.19 15:05* 字数 100 阅读 3154评论 0喜欢 0 所说的吸顶效果就是在页面没有滑动之 ...
- 详解Vue 如何监听Array的变化
详解Vue 如何监听Array的变化:https://www.jb51.net/article/162584.htm
- 设计模式(5): vue 不监听绑定的变量
概述 最近最近做项目的时候总会思考一些大的应用设计模式相关的问题,我把自己的思考记录下来,供以后开发时参考,相信对其他人也有用. 绑定变量 一般情况下,如果我们需要在组件中使用某个变量,会这么使用: ...
- 9.Vue.js 监听属性
本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化. 以下实例通过使用 watch 实现计数器: <div id = "app&q ...
- Vue -- 数据监听
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- vue.js 监听属性的学习/ 千米、米的转换 /时、分、秒 的转换
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 12.vue属性.监听.组件
1.计算属性 https://cn.vuejs.org/v2/guide/computed.html new Vue({ computed:{//定义 show(){ } } }) ++计算属性1.h ...
- vue中监听window.resize的变化
我只想说每个人遇到的bug真的不能一概而论,解决办法也会有不同.在vue中使用echarts的时候,会想要实现window.resize窗体变化大小的时候让图形大小跟着变化.实现的过程中各种bug,也 ...
- vue+hbuilder监听安卓返回键问题
1.监听安卓返回键问题 效果:在一级页面按一下返回键提示退出应用,按两下退出应用;在其它页面中,按一下返回上个历史页面 1 2 import mui from './assets/js/mui.min ...
随机推荐
- Flask框架——Flask脚本、flask知识点补充
文章目录 Flask_脚本 1 集成Python shell 1.1 flask-script的用法: 1.1.1 实例:flask-script的简单实现 1.1.1命令添加方式: 第一种(无参命令 ...
- Python基础——字符编码、文件处理
文章目录 字符编码 一 引入 二 知识储备 2.1 三大核心硬件 2.2 文本编辑器读取文件内容的流程 2.3 python解释器执行文件的流程 2.4 总结 三.字符编码介绍 3.1 什么是字符编码 ...
- Python基础——深浅拷贝、python内存泄露、你并不了解的format、decimal
文章目录 深浅拷贝 先看赋值运算 浅拷贝copy 深拷贝deepcopy 相关面试题 python内存泄露 起因 方案 编写安全的代码 弱引用 你并不了解的format.decimal format格 ...
- 《最新出炉》系列初窥篇-Python+Playwright自动化测试-21-处理鼠标拖拽-番外篇
1.简介 前边宏哥拖拽有提到那个反爬虫机制,加了各种参数,以及加载js脚本文件还是有问题,偶尔宏哥好像发现了解决问题的办法,看到了黎明的曙光,宏哥就说试一下看看行不行,万一实现了.结果宏哥试了结果真的 ...
- 洛谷1451(BFS)
#include"bits/stdc++.h" using namespace std; int mp[110][110]; bool vis[110][110]; int dx[ ...
- shell脚本之语句(条件、循环)
条件语句 1.测试 使用[]时要使用空格,注意格式 格式1:test 条件表达式 格式2:[ 条件表达式 ]#注意空格 注意[]空格,否则会失败 测试 是否成功使用 $?返回值来判断 [ 操 ...
- Chromium VIZ架构详解
1. VIZ的三个端 在设计层面上 viz 的架构如下图所示: 在设计上 viz 分了三个端,分别是 client 端, host 端和 service 端. client 端用于生成要显示的画面(C ...
- JAVA类的加载(2) ——按需加载(延迟加载)
1.例1: 1 /* 2 按需加载:当你不去实例化Cat时,Cat相关类都不会被加载,即按需加载(需要时加载) 3 1.先加载父类 4 2.初始化类 5 3.类只加载一次(暂且这么认为)--缓存 6 ...
- maven2介绍(转)
http://ttitfly.iteye.com/blog/152557 Maven2主要配置文件:pom.xml和settings.xml. POM是Maven的核心对象模型,对于项目,一般只需要p ...
- TiDB binlog故障处理之drainer周期性罢工
背景 前段时间用户反馈某生产环境 TiDB 集群 drainer 频繁发生故障,要么服务崩溃无法启动,要么数据跑着跑着就丢失了,很是折磨人.该集群跑的是离线分析业务,数据量20T ,v4版本,有多个 ...