Javascript 在Firefox中获取失败/被阻止
我创建了这个页面,我不明白为什么在firefox(v80.0.1,没有插件)中提交表单时获取请求失败。它在Chrome、Safari和Edge中运行良好,并将formData发布到formbackend。让我惊讶的是,在firefox中,除了用户被重定向到“/fehler/”之外,没有任何东西被记录到控制台。所以我现在真的不知道如何调试这个。我尝试了不同的请求头,但到目前为止没有任何效果。下面是github repo:您可以在下面找到稍微简化的代码Javascript 在Firefox中获取失败/被阻止,javascript,firefox,Javascript,Firefox,我创建了这个页面,我不明白为什么在firefox(v80.0.1,没有插件)中提交表单时获取请求失败。它在Chrome、Safari和Edge中运行良好,并将formData发布到formbackend。让我惊讶的是,在firefox中,除了用户被重定向到“/fehler/”之外,没有任何东西被记录到控制台。所以我现在真的不知道如何调试这个。我尝试了不同的请求头,但到目前为止没有任何效果。下面是github repo:您可以在下面找到稍微简化的代码 var requestOptions = {
var requestOptions = {
method: "POST",
body: new FormData(event.target),
redirect: "follow",
};
let requestUrl = "formbackend.com/mylink";
fetch(requestUrl, requestOptions)
.then((response) => {
// If response is ok
if (response.ok) {
console.log("fetch response ok");
// redirect to schaden-gemeldet page
window.location.href = redirectUrl;
// Clear saved formdata from localstorage
localStorage.removeItem(storageID);
}
})
// If there is an error log it to console and reidrect to fehler page
.catch((error) => {
console.error("Error: ", error);
window.location.href = "/fehler/";
});
如果有人能向我解释我做错了什么,我将不胜感激。谢谢 回答我自己的问题,因为这可能对将来的人有所帮助: 问题中引用的代码不是问题所在。问题是Firefox在点击提交按钮后重新加载页面时阻止了获取请求。
e.preventDefault()
没有阻止在事件冒泡时加载页面。解决方案是将cancelable设置为true:
代码如下:
document
.querySelector("form")
.dispatchEvent(
new Event("submit", { bubbles: true, cancelable: true })
);