diff --git a/ling_chair_http/finally.js b/ling_chair_http/finally.js index 872eab2..dab33fc 100644 --- a/ling_chair_http/finally.js +++ b/ling_chair_http/finally.js @@ -50,8 +50,8 @@ else { Stickyfill.add($("*").filter((a, b) => $(b).css('position') === 'sticky')) ChatMsgAdapter.initMsgElementEvents() - ChatMsgAdapter.initInputResizer() +ChatTabManager.initTabElementEvents() const showLinkDialog = (link) => mdui.alert(decodeURI(link) + "
如果你确认此链接是安全的, 那么请点我", '链接', () => { }, { confirmText: "关闭" }) diff --git a/ling_chair_http/handler.js b/ling_chair_http/handler.js index bf98916..76ab9e8 100644 --- a/ling_chair_http/handler.js +++ b/ling_chair_http/handler.js @@ -305,6 +305,63 @@ class ChatTabManager { this.find(target).remove() this.tabs[target] = null } + static initTabElementEvents() { + let listeners = {} + let menu + let callback = (e) => { + if (menu) menu.close() + // 切到 div.message-content + let ele = e.get(0) + while ($(ele).attr("tag") != "msg-card") + ele = ele.parentNode + e = $(ele) + let menuHtml = $.parseHTML(``) + let $menu = $(menuHtml) + e.before($menu) + menu = new mdui.Menu(e.get(0), menuHtml, { + position: "bottom", + align: "auto", + // covered: true, + }) + $menu.on('closed.mdui.menu', () => { + $(menuHtml).remove() + }) + menu.open() + } + viewBinding.pageChatSeesion.on('contextmenu mousedown mouseup', '.message-content', (e) => { + let eventType = e.type + let self = $(e.target) + + // 根据事件类型执行不同操作 + switch (eventType) { + case 'contextmenu': + e.preventDefault() // 阻止默认行为 + callback(self) + break + case 'mousedown': + if (!isMobile()) return + listeners[self + ""] = setTimeout(() => { + callback(self) + }, 300) // 300颗够吗 应该够吧 + break + case 'mouseup': + if (!isMobile()) return + clearTimeout(listeners[self + ""]) + listeners[self + ""] = null + break + } + }) + } } class ChatPage {