如何在Sweet Alert中实现新窗口跳转及URL新窗口打开?
嘿,这个需求我之前做项目时刚好碰到过,给你分享两种实用的实现方式,不管是点击弹窗按钮跳转,还是在弹窗逻辑里直接打开指定URL到新窗口都能搞定:
方法1:点击Sweet Alert按钮后跳转至新窗口
这是最常见的场景——用户点击弹窗里的确认/操作按钮后,打开新窗口跳转指定URL。以目前主流的SweetAlert2为例,你可以在按钮的回调函数里使用原生JS的window.open()方法:
Swal.fire({ title: '确认跳转吗?', text: '点击确认将在新窗口打开目标页面', icon: 'question', showCancelButton: true, confirmButtonText: '确认跳转', cancelButtonText: '取消' }).then((result) => { // 当用户点击确认按钮时 if (result.isConfirmed) { // 第一个参数是目标URL,第二个是窗口名称(可自定义),第三个是窗口配置(可选) window.open('https://你的目标地址.com', '_blank', 'width=800,height=600'); } });
这里要注意:window.open()的第三个参数可以自定义新窗口的尺寸、位置等属性,如果不需要特殊配置,直接传'_blank'就行,浏览器会用默认新窗口打开。
方法2:弹窗显示时直接打开新窗口
如果你需要弹窗弹出的同时就自动打开新窗口(不过这种场景要谨慎,容易被浏览器的弹窗拦截机制阻止),可以把window.open()放在弹窗的didOpen钩子函数里:
Swal.fire({ title: '正在打开新窗口...', text: '如果没弹出,请检查浏览器拦截设置', icon: 'info', didOpen: () => { // 弹窗打开后立即触发新窗口跳转 window.open('https://你的目标地址.com', '_blank'); } });
⚠️ 重要提醒:浏览器通常会拦截非用户主动触发的弹窗,所以第一种通过按钮点击触发的方式成功率最高,第二种自动触发的方式大概率会被拦截,除非用户已经把你的网站加入了弹窗白名单。
另外,如果用的是旧版的SweetAlert(不是SweetAlert2),写法类似,只是API稍有不同:
swal({ title: '确认跳转?', text: '点击确认打开新窗口', type: 'warning', showCancelButton: true, confirmButtonText: '确认', cancelButtonText: '取消' }, function(isConfirm) { if (isConfirm) { window.open('https://你的目标地址.com', '_blank'); } });
内容的提问来源于stack exchange,提问作者Maheswar
相关产品推荐
相关产品推荐

