Vue使用WaveSurfer插件的exportPCM方法后会弹出一个blob的新标签页里面是这个方法生成的数组数据,
怎么阻止这个新标签弹出来
1.阻止默认行为:在调用exportPCM方法之前,使用event.preventDefault()方法阻止默认行为。例如,在点击按钮触发exportPCM方法时,可以这样写:
methods: {
exportData() {
event.preventDefault();
const pcmData = this.$refs.waveSurfer.exportPCM();
// 处理pcmData
}
}
或者试试:
使用XMLHttpRequest发送请求:使用XMLHttpRequest发送请求,将生成的数组数据发送到服务器端进行处理,避免浏览器直接打开数据的默认行为。例如:
methods: {
exportData() {
const pcmData = this.$refs.waveSurfer.exportPCM();
const xhr = new XMLHttpRequest();
xhr.open('POST', '/process-pcm-data', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
console.log('处理完成');
}
};
xhr.send(JSON.stringify({ data: pcmData }));
}
}
在Vue中使用WaveSurfer插件的exportPCM方法后,会弹出一个新标签页显示生成的PCM数据,这是因为exportPCM方法返回的是一个Blob对象,浏览器默认会打开一个新标签页显示它。要阻止这个新标签页弹出,可以:1. 给exportPCM方法的返回值赋予一个变量,而不直接让其返回,例如:
let pcmData = this.$wave.exportPCM()
这会将pcmData赋值为Blob对象,而不会触发浏览器打开新标签页。2. 可通过URL.createObjectURL()方法基于该Blob对象创建一个Data URL,然后你可以使用这个Data URL显示波形数据或做其他操作。例如:
let pcmURL = URL.createObjectURL(pcmData)
let _ = this.$wave.exportPCM()
this.$wave.exportPCM()
event.preventDefault()
这可以阻止浏览器识别到Blob对象并打开新标签页。
望采纳!