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

JavaScript函数在Firefox中无法执行,请求排查问题原因

问题分析与修复方案

嘿,你的代码里确实藏着一个会让Firefox“罢工”的小问题——getAttribute()的参数被错误地用数组包裹了!

Chrome的V8引擎对这类小错误有一定的容错能力,会自动把数组转换成字符串来处理,但Firefox的SpiderMonkey引擎遵循更严格的规范,遇到不符合API要求的参数就会直接抛出错误,导致整个函数执行失败,甚至可能影响后续代码的运行。

错误代码的核心问题

// 错误写法:属性名被放在数组里传给getAttribute
let attrVal = toggle.getAttribute(['data-filter']);

Element.getAttribute()方法明确要求传入字符串类型的属性名称,而不是数组,这就是Firefox不买账的原因。

修正后的代码

把数组直接去掉,传入字符串形式的属性名就可以了:

// go over each filter button
filterToggles.forEach(function(toggle) {

  let attrVal = toggle.getAttribute('data-filter'); // 直接传字符串属性名
  let newVal = attrVal.replace(' ', '-'); // hyphenate filter attr val
  toggle.setAttribute('data-filter', newVal); // set filter attr with new val

});

另外,为了让代码更健壮,建议加个判断逻辑,避免当元素没有data-filter属性时,attrVal为null导致调用replace()方法报错:

filterToggles.forEach(function(toggle) {
  let attrVal = toggle.getAttribute('data-filter');
  if (attrVal) { // 先判断属性是否存在
    let newVal = attrVal.replace(' ', '-');
    toggle.setAttribute('data-filter', newVal);
  }
});

这样修改后,代码应该能在Firefox和Chrome中都顺畅运行啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:15:10