Javascript 如何使用postMessage()方法将FormData发送给服务工作者

Javascript 如何使用postMessage()方法将FormData发送给服务工作者,javascript,service-worker,progressive-web-apps,form-data,postmessage,Javascript,Service Worker,Progressive Web Apps,Form Data,Postmessage,在提交表单之前,我试图使用postMessage()方法将formdata对象发送给服务人员 我尝试了多种解决方案,但我总是收到无法克隆的错误或空表单数据 我尝试过的一些事情: var formData = new FormData(); formData.append('photo', image); formData.append('description', description); // attempt 1 var msg = { form_data: formData, }

在提交表单之前,我试图使用postMessage()方法将formdata对象发送给服务人员

我尝试了多种解决方案,但我总是收到无法克隆的错误或空表单数据

我尝试过的一些事情:

var formData = new FormData();
formData.append('photo', image);
formData.append('description', description);

// attempt 1
var msg = {
    form_data: formData,
}

// attempt 2
var msg = {
    form_data: JSON.stringify(formData),
}

// attempt 3
var msg = {
    form_data: JSON.stringify(formData.entries()),
}

// attempt 4

console.log(msg); // form data is either empty or I get an error depending on the attempt
swRegistration.active.postMessage(msg);
这起到了作用:

    var object = {};
    formData.forEach((value, key) => {object[key] = value});
    var json = JSON.stringify(object);

    var msg = {
       form_data: json,
    }

可能重复有趣的。。。Firefox允许通过postMessage克隆FormData对象。可以重写为
const object=object.fromEntries([…FormData])