// 当文本选择结束事件
// onSelectionEnd((selection) => {
// console.log(selection);
// });
function onSelectionEnd(callback) {
let isMouseupListenerActive = false; // 标志变量,用于跟踪是否已经绑定了 mouseup 事件
const mouseupHandler = (event) => {
// 获取当前选中的文本
const selection = window.getSelection().toString().trim();
if (!selection) {
// 如果没有选中文本,重置标志变量并移除监听器
isMouseupListenerActive = false;
document.removeEventListener('mouseup', mouseupHandler);
return;
}
// 执行回调函数
if (typeof callback === 'function') {
callback(selection);
}
// 移除 mouseup 事件监听器,并重置标志变量
isMouseupListenerActive = false;
document.removeEventListener('mouseup', mouseupHandler);
};
document.addEventListener('selectionchange', () => {
// 如果已经有 mouseup 监听器,直接返回,避免重复绑定
if (isMouseupListenerActive) return;
// 标记为已绑定 mouseup 监听器
isMouseupListenerActive = true;
// 绑定 mouseup 事件监听器
document.addEventListener('mouseup', mouseupHandler);
});
}