收口手机抽屉事件范围
This commit is contained in:
@@ -12,6 +12,17 @@ let mobileRoomsOnlineStatusCacheAt = 0;
|
|||||||
|
|
||||||
const MOBILE_ROOMS_ONLINE_STATUS_CACHE_TTL = 10000;
|
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 事件代理。
|
// 手机抽屉内多数节点由 Blade 与后续 AJAX 动态生成,统一使用 document 事件代理。
|
||||||
|
if (!isMobileDrawerEventTarget(event.target)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const drawerTrigger = event.target.closest("[data-mobile-drawer-open]");
|
const drawerTrigger = event.target.closest("[data-mobile-drawer-open]");
|
||||||
if (drawerTrigger) {
|
if (drawerTrigger) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
@@ -318,7 +333,8 @@ export function bindMobileDrawerControls() {
|
|||||||
|
|
||||||
const url = toolUrl.getAttribute("data-mobile-tool-url");
|
const url = toolUrl.getAttribute("data-mobile-tool-url");
|
||||||
if (url) {
|
if (url) {
|
||||||
window.open(url, "_blank");
|
// 工具外链统一新窗口打开,并禁止新窗口反向访问聊天室页面。
|
||||||
|
window.open(url, "_blank", "noopener,noreferrer");
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user