toolbar 出现事件

// 当toolbar出现事件
// onToolbarShow((selection, toolbar, protyle) => {
//     console.log(selection, toolbar, protyle);
// });
function onToolbarShow(callback) {
    let isMouseupListenerActive = false; // 标志变量,用于跟踪是否已经绑定了 mouseup 事件
    const mouseupHandler = (event) => {
        // 获取当前选中的文本
        const selection = window.getSelection().toString().trim();
        if (!selection) {
            // 如果没有选中文本,重置标志变量并移除监听器
            isMouseupListenerActive = false;
            document.removeEventListener('mouseup', mouseupHandler);
            return;
        }

        // 查找最近的 .protyle 元素
        const protyle = event.target.closest('.protyle');
        if (!protyle) {
            // 如果没有找到 .protyle 元素,重置标志变量并移除监听器
            isMouseupListenerActive = false;
            document.removeEventListener('mouseup', mouseupHandler);
            return;
        }

        // 查找工具栏元素
        const toolbar = protyle.querySelector('.protyle-toolbar');
        if (!toolbar) {
            // 如果没有找到工具栏元素,重置标志变量并移除监听器
            isMouseupListenerActive = false;
            document.removeEventListener('mouseup', mouseupHandler);
            return;
        }

        // 执行回调函数
        if (typeof callback === 'function') {
            callback(selection, toolbar, protyle);
        }

        // 移除 mouseup 事件监听器,并重置标志变量
        isMouseupListenerActive = false;
        document.removeEventListener('mouseup', mouseupHandler);
    };
    document.addEventListener('selectionchange', () => {
        // 如果已经有 mouseup 监听器,直接返回,避免重复绑定
        if (isMouseupListenerActive) return;
        // 标记为已绑定 mouseup 监听器
        isMouseupListenerActive = true;

        // 绑定 mouseup 事件监听器
        document.addEventListener('mouseup', mouseupHandler);
    });
}
image.png

留下你的脚步
推荐阅读