修复:全员清屏改用 Echo 直接监听(不依赖编译产物)

- 从 CustomEvent 中转改为 window.Echo.join().listen() 直接监听
- Blade 模板同步即生效,无需 npm run build
This commit is contained in:
2026-02-26 23:20:02 +08:00
parent 065e82f8b7
commit 0e82c3fff0

View File

@@ -507,40 +507,43 @@
document.getElementById('room-title-display').innerText = e.detail.title;
});
// ── 管理员全员清屏事件 ───────────────────────
window.addEventListener('chat:screen-cleared', (e) => {
const operator = e.detail.operator;
// ── 管理员全员清屏事件(直接用 Echo 监听,不依赖编译产物) ───────
if (window.Echo) {
window.Echo.join(`room.${window.chatContext.roomId}`)
.listen('ScreenCleared', (e) => {
const operator = e.operator;
// 清除公聊窗口say1所有消息
const say1 = document.getElementById('say');
if (say1) say1.innerHTML = '';
// 清除公聊窗口say1所有消息
const say1 = document.getElementById('say');
if (say1) say1.innerHTML = '';
// 清除包厢窗口say2中非悄悄话的消息
const say2 = document.getElementById('say2');
if (say2) {
const items = say2.querySelectorAll('.msg-line');
items.forEach(item => {
// 保留悄悄话消息(含 msg-secret 类)
if (!item.querySelector('.msg-secret')) {
item.remove();
// 清除包厢窗口say2中非悄悄话的消息
const say2 = document.getElementById('say2');
if (say2) {
const items = say2.querySelectorAll('.msg-line');
items.forEach(item => {
// 保留悄悄话消息(含 msg-secret 类)
if (!item.querySelector('.msg-secret')) {
item.remove();
}
});
}
// 显示清屏提示
const sysDiv = document.createElement('div');
sysDiv.className = 'msg-line';
const now = new Date();
const timeStr = now.getHours().toString().padStart(2, '0') + ':' +
now.getMinutes().toString().padStart(2, '0') + ':' +
now.getSeconds().toString().padStart(2, '0');
sysDiv.innerHTML =
`<span style="color: #dc2626; font-weight: bold;">🧹 管理员 <b>${operator}</b> 已执行全员清屏</span><span class="msg-time">(${timeStr})</span>`;
if (say1) {
say1.appendChild(sysDiv);
say1.scrollTop = say1.scrollHeight;
}
});
}
// 显示清屏提示
const sysDiv = document.createElement('div');
sysDiv.className = 'msg-line';
const now = new Date();
const timeStr = now.getHours().toString().padStart(2, '0') + ':' +
now.getMinutes().toString().padStart(2, '0') + ':' +
now.getSeconds().toString().padStart(2, '0');
sysDiv.innerHTML =
`<span style="color: #dc2626; font-weight: bold;">🧹 管理员 <b>${operator}</b> 已执行全员清屏</span><span class="msg-time">(${timeStr})</span>`;
if (say1) {
say1.appendChild(sysDiv);
say1.scrollTop = say1.scrollHeight;
}
});
}
// ── 发送消息Enter 发送) ───────────────────────
document.getElementById('content').addEventListener('keydown', function(e) {