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

Svelte使用on:click触发Element.setCapture()废弃警告及功能异常问题

问题分析与解决方案

问题原因

你遇到的Firefox浏览器警告和子容器无法打开的问题,根源在于给<li>元素绑定了on:focus={dispatch('click', catName)}:

  • Firefox处理焦点事件时,Svelte内部可能调用了已废弃的Element.setCapture()方法,触发警告;
  • focus事件与click事件的触发逻辑冲突,干扰了openSelectedCat函数的正常执行,导致子容器无法打开;
  • <li>默认不是可聚焦元素,强行绑定focus事件本身就容易引发跨浏览器兼容性问题。

修复方案

移除引发冲突的on:focus绑定,若需支持键盘导航(保证可访问性),改用标准键盘事件处理:

修改后的代码:

{#if categoryArray}
  <div class="searchCategoriesBottom">
    <div class="search-form" on:keydown>
      <ul class="categoryListUl">
        {#each categoryArray as catName, index}
          <li
            class="categoryLi"
            tabindex="0" <!-- 让li支持键盘聚焦 -->
            on:click={openSelectedCat}
            on:keydown.enter={openSelectedCat}
            on:keydown.space={(e) => {
              e.preventDefault(); // 阻止空格默认滚动行为
              openSelectedCat();
            }}
          >
            <span class="categoryDescription">{catName}</span>
          </li>
        {/each}
      </ul>
    </div>
  </div>
{/if}

额外说明

如果确实需要在元素聚焦时执行逻辑,不要直接dispatchclick事件,应单独定义处理函数,避免模拟click事件带来的浏览器行为冲突和废弃API调用。

内容的提问来源于stack exchange,提问作者Başar Ballıöz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 05:10:39