You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Puppeteer下载href为javascript:void(0);的链接文件?

问题解决:Puppeteer点击javascript:void(0)的a标签无法触发下载

你的问题核心在于这个a标签的href是javascript:void(0)——它本身不指向任何真实的文件资源,点击逻辑完全依赖绑定的JS事件监听器,之前添加download属性的方法自然无效,因为download仅对包含真实可下载资源URL的a标签生效。

试试下面几种针对性解决方案:

  • 用Puppeteer原生点击方法模拟真实交互:

    await page.click('a');
    

    这个方法会模拟真实用户的点击行为,更易触发元素上绑定的各类事件。

  • 触发完整鼠标事件序列:
    部分网站会监听mousedown、mouseup这类前置事件,单纯调用click可能无法触发完整逻辑:

    await page.evaluate(() => {
      const link = document.querySelector('a');
      link.dispatchEvent(new MouseEvent('mousedown', { bubbles: true }));
      link.dispatchEvent(new MouseEvent('mouseup', { bubbles: true }));
      link.dispatchEvent(new MouseEvent('click', { bubbles: true }));
    });
    
  • 拦截并处理下载请求:
    如果点击后页面会动态生成下载链接,可直接监听页面的下载事件并指定保存路径:

    page.on('download', async (download) => {
      await download.saveAs('File.pdf'); // 自定义保存的文件名
    });
    await page.click('a');
    

内容的提问来源于stack exchange,提问作者Nawrin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 12:24:53