怎么阻止弹出blob新标签页

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)
  1. 不使用pcmData和pcmURL变量,仅将exportPCM方法赋值给一个_变量即可防止新标签页弹出,例如:
let _ = this.$wave.exportPCM()
  1. 在exportPCM方法调用后阻止默认行为,例如:
this.$wave.exportPCM()
event.preventDefault()

这可以阻止浏览器识别到Blob对象并打开新标签页。

望采纳!