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

如何在TinyMCE自定义工具栏按钮的onAction中获取onClick事件?

获取TinyMCE自定义工具栏按钮的点击事件(onClick Event)

TinyMCE 自定义工具栏按钮的 onAction 回调确实仅提供按钮状态控制的API,没有直接暴露原生点击事件,且废弃的 window.event 不建议使用。你可以通过以下方法获取原生点击事件:

  • 利用按钮API的 getButtonElement() 方法获取按钮对应的DOM元素,然后给该元素绑定原生 click 事件监听,即可拿到完整的原生事件对象(包括 event.target、event.currentTarget 等)。

示例代码如下:

editor.ui.registry.addButton('customButton', {
    text: '自定义按钮',
    icon: 'icon-name',
    onAction: (api) => {
        // 获取按钮DOM元素
        const buttonEl = api.getButtonElement();
        // 绑定原生click事件(添加标记避免重复绑定)
        if (!buttonEl.dataset.eventBound) {
            buttonEl.addEventListener('click', (event) => {
                // 这里可获取完整原生点击事件
                console.log(event.target);
                console.log(event.currentTarget);
                // 执行业务逻辑
            });
            buttonEl.dataset.eventBound = 'true';
        }
    },
});

另外,也可以在TinyMCE的setup阶段提前绑定事件,确保按钮初始化完成后即可监听:

tinymce.init({
    // 其他配置项
    setup: (editor) => {
        editor.on('PostRender', () => {
            const customButton = editor.ui.registry.get('customButton');
            if (customButton) {
                const buttonEl = customButton.getButtonElement();
                buttonEl.addEventListener('click', (event) => {
                    console.log('点击事件:', event);
                });
            }
        });
    },
    toolbar: 'customButton'
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:40:26