toolbar出现事件
// 当toolbar出现事件
// onToolbarShow((selection, toolbar, protyle) => {
// console.log(selection, toolbar, protyle);
// });
function onToolbarShow(callback) {
let isMouseupListenerActive = false; // 标志变量,用于跟踪是否已经绑定了 mouseup 事件
document.addEventListener('selectionchange', () => {
// 如果已经有 mouseup 监听器,直接返回,避免重复绑定
if (isMouseupListenerActive) return;
// 标记为已绑定 mouseup 监听器
isMouseupListenerActive = true;
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);
};
// 绑定 mouseup 事件监听器
document.addEventListener('mouseup', mouseupHandler);
});
}