EmailJS表单提交后如何通过JavaScript跳转至thank-you.html
解决方案
你无法正常跳转的核心原因有两个:
window.open触发的新窗口打开逻辑,在异步请求的回调中执行时,会被现代浏览器默认判定为非用户主动触发的广告弹窗直接拦截- 你没有把跳转代码放到正确的成功回调位置,且原代码末尾存在冗余的闭合花括号,容易引发语法错误导致逻辑不执行。
表单提交后的跳转推荐直接在当前页跳转,不要开新标签,把跳转逻辑放到EmailJS发送成功的回调函数内即可,修正后的可运行代码如下:
emailjs .send( "service_qenubp3", "template_htul1w9", templateParams, "FKN-7Z513oHHBUzlm" ) .then( function (response) { console.log("SUCCESS!", response.status, response.text); setEmailSent(true); // 提交成功后跳转至感谢页 window.location.href = "/thankyou.html"; }, function (error) { console.log("FAILED...", error); // 提交失败场景可自行加错误提示,无需跳转 } );
补充说明
- 跳转路径建议用相对路径写法,不要硬编码完整域名,后续站点迁移时不需要修改代码
- 如果确实需要新标签页打开感谢页,不能直接在回调里调
window.open,需要在调用emailjs.send之前提前声明一个空窗口变量,等请求成功后再给该变量赋值目标地址,绕过浏览器弹窗拦截,但常规表单场景不推荐这种交互 - 调整代码后注意检查函数的花括号配对,删掉原代码末尾多余的两层闭合符号,避免语法报错。
内容的提问来源于stack exchange,提问作者Leads4life
相关产品推荐
相关产品推荐

