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

含role=button的链接触发Uncaught TypeError,影响::after伪元素功能

问题分析与解决
  • 报错根源:脚本遍历所有<a>标签时,若遇到无href属性或href为空的标签(比如部分带role="button"的按钮链接),直接调用.match()会因undefined抛出TypeError,中断整个脚本执行,导致后续正常链接的图标、tooltip逻辑全部失效。

  • 核心修复:在判断下载链接的逻辑中,先校验href属性是否有效,再执行正则匹配:

    // 原错误代码
    return $(this).attr("href").match(/\.(pdf|doc|docx|ppt|pptx|xls|xlxs|epub|odt|odp|ods|txt|rtf)$/i);
    
    // 修复后代码(兼容所有jQuery版本)
    const linkHref = $(this).attr("href");
    return linkHref && linkHref.match(/\.(pdf|doc|docx|ppt|pptx|xls|xlxs|epub|odt|odp|ods|txt|rtf)$/i);
    

    若你的环境支持ES6可选链操作符,也可以用更简洁的写法:

    return $(this).attr("href")?.match(/\.(pdf|doc|docx|ppt|pptx|xls|xlxs|epub|odt|odp|ods|txt|rtf)$/i);
    
  • 额外优化:直接过滤掉不需要处理的按钮类链接,避免无意义的遍历:

    // 只处理非按钮类型的<a>标签
    $("a:not([role='button'], [type='button'], .btn-floating)").each(function() {
      // 你的图标添加、tooltip绑定逻辑
    });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 15:15:27