tab
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.gf.qytechs.cn/scripts/538683/1603854/allie%20test.js
Tabs.Chat = {
tabOrder: 900,
tabLabel: 'Chat',
tabDisabled: false,
myDiv: null,
chatDiv: null,
inputDiv: null,
init: function(div){
var t = Tabs.Chat;
t.myDiv = div;
t.createMainDiv();
t.applyCustomStyles();
},
createMainDiv: function(){
var t = Tabs.Chat;
var m = '<DIV class=divHeader align=center>'+tx('CHAT')+'</div>';
m += '<div id="pbChatContent" class="pbChatContainer" style="height:400px; max-height:400px; overflow-y:auto;"></div>';
m += '<div id="pbChatInput" style="margin-top:10px;">';
m += '<textarea id="pbChatTextArea" rows="3" style="width:100%; margin-bottom:5px;"></textarea>';
m += '<button id="pbChatSendButton" style="width:100%;">Send</button>';
m += '</div>';
t.myDiv.innerHTML = m;
t.chatDiv = ById('pbChatContent');
t.inputDiv = ById('pbChatInput');
// Add event listeners
ById('pbChatTextArea').addEventListener('keypress', function(e) {
if (e.key === 'Enter' && !e.shiftKey) {
e.preventDefault();
t.sendChat();
}
});
ById('pbChatSendButton').addEventListener('click', function() {
t.sendChat();
});
t.hookChat();
},
applyCustomStyles: function(){
var styleElement = document.createElement('style');
styleElement.type = 'text/css';
styleElement.innerHTML = `
.pbChatContainer .chat-message {
text-align: right;
direction: rtl;
margin-bottom: 5px;
}
.pbChatContainer .chat-message .chat-time {
float: left;
color: #888;
}
.pbChatContainer .chat-message .chat-user {
margin-left: 5px;
font-weight: bold;
}
.pbChatContainer .chat-message .chat-text {
display: inline-block;
direction: ltr;
text-align: left;
}
`;
document.head.appendChild(styleElement);
},
hookChat: function(){
var t = Tabs.Chat;
var gameChatContainer = document.querySelector('#mod_comm_list1');
if (gameChatContainer) {
t.updateChat();
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
if (mutation.type === 'childList') {
t.updateChat();
}
});
});
observer.observe(gameChatContainer, { childList: true, subtree: true });
} else {
console.error('Could not find game chat container');
}
},
updateChat: function(){
var t = Tabs.Chat;
var gameChatContainer = document.querySelector('#mod_comm_list1');
if (gameChatContainer && t.chatDiv) {
t.chatDiv.innerHTML = gameChatContainer.innerHTML;
t.chatDiv.scrollTop = t.chatDiv.scrollHeight;
// Add our custom class to each chat message
var chatMessages = t.chatDiv.querySelectorAll('.chat-message');
chatMessages.forEach(function(message) {
message.classList.add('pbChatMessage');
});
}
},
sendChat: function(){
var t = Tabs.Chat;
var chatTextArea = ById('pbChatTextArea');
var message = chatTextArea.value.trim();
if (message !== '') {
if (typeof uW.Chat === 'object' && typeof uW.Chat.sendMsg === 'function') {
uW.Chat.sendMsg(message);
chatTextArea.value = '';
t.updateChat();
} else {
console.error('Could not find game chat send function');
}
}
}
};