收口手机抽屉事件范围

This commit is contained in:
2026-04-25 10:37:44 +08:00
parent 990b939a3a
commit 0cfb43183a
+17 -1
View File
@@ -12,6 +12,17 @@ let mobileRoomsOnlineStatusCacheAt = 0;
const MOBILE_ROOMS_ONLINE_STATUS_CACHE_TTL = 10000;
/**
* 判断点击是否来自手机抽屉区域。
* document 代理只处理浮动按钮、遮罩和抽屉内部,避免其它区域复用 data 属性时误触发。
*
* @param {Element} target 事件目标
* @returns {boolean}
*/
function isMobileDrawerEventTarget(target) {
return Boolean(target.closest("#mobile-fabs, #mobile-drawer-mask, .mobile-drawer"));
}
/**
* 执行手机抽屉工具入口动作。
*
@@ -283,6 +294,10 @@ export function bindMobileDrawerControls() {
}
// 手机抽屉内多数节点由 Blade 与后续 AJAX 动态生成,统一使用 document 事件代理。
if (!isMobileDrawerEventTarget(event.target)) {
return;
}
const drawerTrigger = event.target.closest("[data-mobile-drawer-open]");
if (drawerTrigger) {
event.preventDefault();
@@ -318,7 +333,8 @@ export function bindMobileDrawerControls() {
const url = toolUrl.getAttribute("data-mobile-tool-url");
if (url) {
window.open(url, "_blank");
// 工具外链统一新窗口打开,并禁止新窗口反向访问聊天室页面。
window.open(url, "_blank", "noopener,noreferrer");
}
return;