allie test

tab

当前为 2025-06-08 提交的版本,查看 最新版本

此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.gf.qytechs.cn/scripts/538683/1603882/allie%20test.js

  1. Tabs.Chat = {
  2. tabOrder: 900,
  3. tabLabel: 'Chat',
  4. tabDisabled: false,
  5. myDiv: null,
  6. chatDiv: null,
  7. inputDiv: null,
  8. lastMessageCount: 0,
  9. pollInterval: null,
  10.  
  11. init: function(div){
  12. var t = Tabs.Chat;
  13. t.myDiv = div;
  14. t.createMainDiv();
  15. t.applyCustomStyles();
  16. t.startPolling();
  17. t.debug('Chat tab initialized');
  18. },
  19.  
  20. createMainDiv: function(){
  21. var t = Tabs.Chat;
  22. var m = '<DIV class=divHeader align=center>'+tx('CHAT')+'</div>';
  23. m += '<div id="pbChatContent" style="height:450px; max-height:450px; overflow-y:auto;"></div>';
  24. m += '<div id="pbChatInput" style="margin-top:10px;"></div>';
  25.  
  26. t.myDiv.innerHTML = m;
  27. t.chatDiv = ById('pbChatContent');
  28. t.inputDiv = ById('pbChatInput');
  29.  
  30. t.cloneGameChatInput();
  31. },
  32.  
  33. applyCustomStyles: function(){
  34. var styleElement = document.createElement('style');
  35. styleElement.type = 'text/css';
  36. styleElement.innerHTML = `
  37. #pbChatContent .chat-message {
  38. display: flex;
  39. flex-direction: row-reverse;
  40. justify-content: flex-start;
  41. align-items: baseline;
  42. margin-bottom: 5px;
  43. text-align: right;
  44. }
  45. #pbChatContent .chat-time {
  46. margin-left: 5px;
  47. color: #888;
  48. font-size: 0.8em;
  49. }
  50. #pbChatContent .chat-user {
  51. margin-left: 5px;
  52. font-weight: bold;
  53. }
  54. #pbChatContent .chat-text {
  55. word-wrap: break-word;
  56. max-width: 80%;
  57. }
  58. `;
  59. document.head.appendChild(styleElement);
  60. },
  61.  
  62. startPolling: function() {
  63. var t = Tabs.Chat;
  64. t.pollInterval = setInterval(function() {
  65. t.checkForNewMessages();
  66. }, 1000); // Check every second
  67. },
  68.  
  69. checkForNewMessages: function() {
  70. var t = Tabs.Chat;
  71. var gameChatContainer = document.querySelector('#mod_comm_list1');
  72. if (gameChatContainer) {
  73. var messages = gameChatContainer.querySelectorAll('.chat-message');
  74. if (messages.length > t.lastMessageCount) {
  75. t.debug('New messages detected');
  76. for (var i = t.lastMessageCount; i < messages.length; i++) {
  77. var clonedMessage = messages[i].cloneNode(true);
  78. t.formatChatMessage(clonedMessage);
  79. t.chatDiv.appendChild(clonedMessage);
  80. }
  81. t.lastMessageCount = messages.length;
  82. t.chatDiv.scrollTop = t.chatDiv.scrollHeight;
  83. }
  84. } else {
  85. t.debug('Game chat container not found');
  86. }
  87. },
  88.  
  89. cloneGameChatInput: function(){
  90. var t = Tabs.Chat;
  91. var gameChatInput = document.querySelector('#mod_comm_input');
  92. if (gameChatInput) {
  93. var inputClone = gameChatInput.cloneNode(true);
  94. t.inputDiv.appendChild(inputClone);
  95.  
  96. var chatTextArea = t.inputDiv.querySelector('textarea');
  97. var sendButton = t.inputDiv.querySelector('button');
  98. if (chatTextArea && sendButton) {
  99. chatTextArea.addEventListener('keypress', function(e) {
  100. if (e.key === 'Enter' && !e.shiftKey) {
  101. e.preventDefault();
  102. t.sendChat();
  103. }
  104. });
  105.  
  106. sendButton.addEventListener('click', function() {
  107. t.sendChat();
  108. });
  109. }
  110. } else {
  111. t.debug('Game chat input not found');
  112. }
  113. },
  114.  
  115. formatChatMessage: function(messageElement) {
  116. var timeElement = messageElement.querySelector('.chat-time');
  117. var userElement = messageElement.querySelector('.chat-user');
  118. var textElement = messageElement.querySelector('.chat-text');
  119.  
  120. if (timeElement) timeElement.textContent = '[' + timeElement.textContent + ']';
  121. if (userElement) userElement.textContent = userElement.textContent + ':';
  122.  
  123. // Ensure elements are in the correct order
  124. if (textElement) messageElement.appendChild(textElement);
  125. if (userElement) messageElement.appendChild(userElement);
  126. if (timeElement) messageElement.appendChild(timeElement);
  127. },
  128.  
  129. sendChat: function(){
  130. var t = Tabs.Chat;
  131. var chatTextArea = t.inputDiv.querySelector('textarea');
  132. var gameChatTextArea = document.querySelector('#mod_comm_input textarea');
  133. var gameSendButton = document.querySelector('#mod_comm_input button');
  134.  
  135. if (chatTextArea && gameChatTextArea && gameSendButton) {
  136. var message = chatTextArea.value.trim();
  137. if (message !== '') {
  138. gameChatTextArea.value = message;
  139. gameSendButton.click();
  140. chatTextArea.value = '';
  141. t.debug('Chat message sent: ' + message);
  142. }
  143. } else {
  144. t.debug('Could not find necessary elements to send chat');
  145. }
  146. },
  147.  
  148. debug: function(message) {
  149. console.log('Chat Tab Debug: ' + message);
  150. }
  151. };

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址