Use Right Shift button to enable/disable chat
目前為
// ==UserScript==
// @name Arras.io Chat
// @match *://arras.io/*
// @match *://arras.netlify.app/*
// @author FireMan
// @description Use Right Shift button to enable/disable chat
// @namespace FireMan labs.
// @version 1.1
// @license MIT
// ==/UserScript==
(function(){
let name = "unnamed";
let item = window.localStorage.getItem("arras.io");
let lockhash = "";
if (item != null) {
name = JSON.parse(window.localStorage.getItem("arras.io")).name;
}
let info_container = document.createElement("div");
info_container.innerText = "Arras.io Chat (by FireMan)";
info_container.style.marginLeft = "40%";
info_container.style.color = "white";
info_container.style.opacity = "1";
let chat_container = document.createElement("div");
chat_container.style.marginLeft = "2%";
chat_container.style.color = "red";
chat_container.style.opacity = "1";
chat_container.style.height = "80%";
chat_container.fontSize = "100%";
let msg_container = document.createElement("input");
msg_container.placeholder = "message";
msg_container.style.marginLeft = "2%";
msg_container.style.color = "black";
msg_container.style.opacity = "1";
msg_container.style.height = "5%";
msg_container.style.width = "70%";
msg_container.style.fontSize = "110%";
let send_container = document.createElement("button");
send_container.innerText = "SEND / UPDATE";
send_container.style.marginLeft = "2%";
send_container.style.color = "black";
send_container.style.opacity = "1";
send_container.style.height = "5%";
send_container.style.width = "25%";
send_container.style.fontSize = "110%";
send_container.onclick = function(){
sendEverything();
msg_container.value = "";
return false;
}
let mainContainer = document.createElement("div");
mainContainer.style=`
width:50%;
height:70%;
background:#000000;
opacity: 80%;
margin: auto;
font-size: 150%;
display: none;`;
mainContainer.appendChild(info_container);
mainContainer.appendChild(chat_container);
mainContainer.appendChild(msg_container);
mainContainer.appendChild(send_container);
document.body.appendChild(mainContainer);
document.addEventListener("keydown", (e) => {
if (e.code === "ShiftRight") {
if (mainContainer.style.display === "none") {
mainContainer.style.display = "block";
} else {
mainContainer.style.display = "none";
}
} else if (e.code === "Enter" && document.activeElement === msg_container) {
sendEverything();
}
});
function sendEverything() {
let xhr = new XMLHttpRequest();
xhr.open("POST", "https://arrasio-chat.glitch.me/");
xhr.setRequestHeader("Accept", "plain/text");
xhr.setRequestHeader("Content-Type", "plain/text");
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
chat_container.innerText = "";
let msgs = JSON.parse(xhr.responseText);
for (let i = 0; i < msgs.length; ++i) {
if (lockhash === msgs[i].srv) {
let msg = msgs[i].nick + ": " + msgs[i].message;
chat_container.innerText += (msg + '\n');
}
}
}};
lockhash = "";
let started = false;
for (let i = 0; i < location.hash.length; i++) {
if (location.hash[i] === '#') { started = true; continue }
if (started) {
lockhash += location.hash[i];
}
}
let data = JSON.stringify({
srv: lockhash,
nick: name,
message: msg_container.value
});
xhr.send(data);
}
})();