修复:全员清屏改用 Echo 直接监听(不依赖编译产物)
- 从 CustomEvent 中转改为 window.Echo.join().listen() 直接监听 - Blade 模板同步即生效,无需 npm run build
This commit is contained in:
@@ -507,40 +507,43 @@
|
|||||||
document.getElementById('room-title-display').innerText = e.detail.title;
|
document.getElementById('room-title-display').innerText = e.detail.title;
|
||||||
});
|
});
|
||||||
|
|
||||||
// ── 管理员全员清屏事件 ───────────────────────
|
// ── 管理员全员清屏事件(直接用 Echo 监听,不依赖编译产物) ───────
|
||||||
window.addEventListener('chat:screen-cleared', (e) => {
|
if (window.Echo) {
|
||||||
const operator = e.detail.operator;
|
window.Echo.join(`room.${window.chatContext.roomId}`)
|
||||||
|
.listen('ScreenCleared', (e) => {
|
||||||
|
const operator = e.operator;
|
||||||
|
|
||||||
// 清除公聊窗口(say1)所有消息
|
// 清除公聊窗口(say1)所有消息
|
||||||
const say1 = document.getElementById('say');
|
const say1 = document.getElementById('say');
|
||||||
if (say1) say1.innerHTML = '';
|
if (say1) say1.innerHTML = '';
|
||||||
|
|
||||||
// 清除包厢窗口(say2)中非悄悄话的消息
|
// 清除包厢窗口(say2)中非悄悄话的消息
|
||||||
const say2 = document.getElementById('say2');
|
const say2 = document.getElementById('say2');
|
||||||
if (say2) {
|
if (say2) {
|
||||||
const items = say2.querySelectorAll('.msg-line');
|
const items = say2.querySelectorAll('.msg-line');
|
||||||
items.forEach(item => {
|
items.forEach(item => {
|
||||||
// 保留悄悄话消息(含 msg-secret 类)
|
// 保留悄悄话消息(含 msg-secret 类)
|
||||||
if (!item.querySelector('.msg-secret')) {
|
if (!item.querySelector('.msg-secret')) {
|
||||||
item.remove();
|
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 发送) ───────────────────────
|
// ── 发送消息(Enter 发送) ───────────────────────
|
||||||
document.getElementById('content').addEventListener('keydown', function(e) {
|
document.getElementById('content').addEventListener('keydown', function(e) {
|
||||||
|
|||||||
Reference in New Issue
Block a user