微信内置浏览器点下载按钮没反应,Safari 打开一个新标签后立刻关闭,页面停在原处,安卓 Chrome 提示已阻止弹出式窗口。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,下载用 window.open 打开新窗口,触发时机在异步请求之后,浏览器判定不是用户手势,直接拦截。微信内置浏览器还不允许直接下载文件。
「移动端下载跳转」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。报错里带路径的,先去看那个路径在不在、权限对不对。
btn.addEventListener('click', () => {
window.location.href = '/download/file.zip';
});
同一份配置存在多处的,先确认改的是被加载的那一份。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。
具体做法是,改成同步跳转,点击时直接设置 location.href,别等异步返回;微信环境显示右上角在浏览器打开的引导层;在微信、Safari、Chrome 三个环境各点一次验证。
最后用这个标准收尾,三个环境点击后都能开始下载或看到引导提示,不再停在空白页。
