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

如何在函数中从#input1派发自定义事件?dispatchEvent报错排查

解决Wix元素调用dispatchEvent报错的问题

你用$w('#input1')获取的是Wix封装的组件对象,不是原生DOM元素,所以没有dispatchEvent方法,这就是报错的原因。

要解决这个问题,需要先通过Wix元素的getNode()方法获取对应的原生DOM节点,再在这个原生节点上派发自定义事件:

修改后的代码如下:

export function captcha1_verified() {
    $w('#input1').show();

    const myEvent = new CustomEvent("myevent", {
        detail: {},
        bubbles: true,
        cancelable: true,
        composed: false,
    });

    // 获取input1的原生DOM节点
    const inputDom = $w('#input1').getNode();
    // 在原生节点上派发事件
    inputDom.dispatchEvent(myEvent);
}

如果需要监听这个自定义事件,同样要在原生DOM节点上添加监听:

$w('#input1').onReady(() => {
    const inputDom = $w('#input1').getNode();
    inputDom.addEventListener('myevent', (e) => {
        // 这里写事件处理逻辑
        console.log('自定义事件触发', e.detail);
    });
});

注意:调用getNode()前要确保元素已经完成渲染,show()方法执行后元素会被渲染,所以这里没问题;如果是动态创建的元素,最好放在onReady回调里执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 06:50:28