Greasy Fork is available in English.
tab
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.icu/scripts/538683/1605108/allie%20test.js
Tabs.Chat = {
tabOrder: 900,
tabLabel: 'Chat',
tabDisabled: false,
myDiv: null,
chatTimer: null,
init: function(div) {
var t = Tabs.Chat;
t.myDiv = div;
// Create the chat interface
t.createChatInterface();
// Start monitoring for new messages
t.startChatMonitor();
},
createChatInterface: function() {
var t = Tabs.Chat;
var m = '<div class="divHeader" align="center">CHAT</div>';
// Chat tabs
m += '<div id="pbChatTabs" style="margin-bottom:10px;">';
m += '<ul class="tabs">';
m += '<li class="tab active" id="pbGlobalChatTab" onclick="Tabs.Chat.switchTab(\'global\')">Global</li>';
m += '<li class="tab" id="pbAllianceChatTab" onclick="Tabs.Chat.switchTab(\'alliance\')">Alliance</li>';
m += '</ul>';
m += '</div>';
// Chat content area
m += '<div id="pbChatContent" style="height:400px; border:1px solid #888; margin-bottom:10px; overflow-y:auto; padding:5px;"></div>';
// Chat input area
m += '<div id="pbChatInputArea" style="display:flex;">';
m += '<input type="text" id="pbChatInput" style="flex-grow:1; padding:5px; margin-right:5px;" placeholder="Type your message here..." />';
m += '<button id="pbChatSend" style="padding:5px 15px;" onclick="Tabs.Chat.sendChat()">Send</button>';
m += '</div>';
t.myDiv.innerHTML = m;
// Add event listener for Enter key
document.getElementById('pbChatInput').addEventListener('keypress', function(e) {
if (e.key === 'Enter') {
Tabs.Chat.sendChat();
}
});
// Initialize with global chat
t.currentTab = 'global';
t.updateChatDisplay();
},
switchTab: function(tabName) {
var t = Tabs.Chat;
// Update tab UI
document.getElementById('pbGlobalChatTab').className = 'tab' + (tabName === 'global' ? ' active' : '');
document.getElementById('pbAllianceChatTab').className = 'tab' + (tabName === 'alliance' ? ' active' : '');
// Set current tab
t.currentTab = tabName;
// Update chat display
t.updateChatDisplay();
},
updateChatDisplay: function() {
var t = Tabs.Chat;
var chatContent = document.getElementById('pbChatContent');
// Find the appropriate game chat container based on current tab
var gameChat = null;
if (t.currentTab === 'global') {
gameChat = document.querySelector('#mod_comm_list1');
} else {
gameChat = document.querySelector('#mod_comm_list2');
}
// If we found the game chat, copy its content
if (gameChat) {
chatContent.innerHTML = gameChat.innerHTML;
chatContent.scrollTop = chatContent.scrollHeight;
} else {
chatContent.innerHTML = '<div style="color:#888; text-align:center; padding:20px;">Chat not available</div>';
}
},
startChatMonitor: function() {
var t = Tabs.Chat;
// Clear any existing timer
if (t.chatTimer) {
clearInterval(t.chatTimer);
}
// Set up a timer to check for new messages
t.chatTimer = setInterval(function() {
if (t.myDiv.style.display !== 'none') {
t.updateChatDisplay();
}
}, 2000); // Check every 2 seconds
},
sendChat: function() {
var t = Tabs.Chat;
var input = document.getElementById('pbChatInput');
var message = input.value.trim();
if (message === '') return;
// Find the game's chat input and send button
var gameInput = null;
var gameSendButton = null;
// First, make sure the correct chat tab is selected in the game
var gameTabSelector = document.querySelector('#mod_comm_tabs');
if (gameTabSelector) {
var tabIndex = (t.currentTab === 'global') ? 0 : 1;
var tabToClick = gameTabSelector.querySelectorAll('li')[tabIndex];
if (tabToClick) {
// Simulate click on the appropriate tab
tabToClick.click();
// Wait a moment for the tab to switch
setTimeout(function() {
// Now find the input and send button
gameInput = document.querySelector('#mod_comm_input textarea');
gameSendButton = document.querySelector('#mod_comm_input button');
if (gameInput && gameSendButton) {
// Set the message in the game's input
gameInput.value = message;
// Trigger input event to make sure the game recognizes the text
var inputEvent = new Event('input', { bubbles: true });
gameInput.dispatchEvent(inputEvent);
// Click the send button
gameSendButton.click();
// Clear our input
input.value = '';
// Update the chat display after a short delay
setTimeout(function() {
t.updateChatDisplay();
}, 500);
} else {
console.error('Could not find game chat input or send button');
}
}, 200);
}
} else {
// If we can't find the tab selector, try direct approach
gameInput = document.querySelector('#mod_comm_input textarea');
gameSendButton = document.querySelector('#mod_comm_input button');
if (gameInput && gameSendButton) {
// Set the message in the game's input
gameInput.value = message;
// Trigger input event
var inputEvent = new Event('input', { bubbles: true });
gameInput.dispatchEvent(inputEvent);
// Click the send button
gameSendButton.click();
// Clear our input
input.value = '';
// Update the chat display after a short delay
setTimeout(function() {
t.updateChatDisplay();
}, 500);
} else {
console.error('Could not find game chat input or send button');
}
}
}
};