Estoy tratando de crear un script que oculte el chat y lo vuelva a mostrar después de presionar el botón H , pero no sé cómo necesito hacer que los elementos <div> del sitio web se muestren nuevamente después de eliminarlo. Aquí está mi código:
// ==UserScript== // @name Cytos Additions // @namespace http://tampermonkey.net/ // @match https://cytos.io/ // @grant none // ==/UserScript== var isToggled = false; function doc_keyUp(e) { switch (e.keyCode) { case 72: // h if (isToggled) { } else { document.getElementsByClassName('_1FlWeEtrJKCnvzX-Y50CLP')[0].remove() } var isToggled = true; break; default: break; } } document.addEventListener('keyup', doc_keyUp, false); No sé qué poner debajo de la if(isToggled) para que el chat vuelva a aparecer.
Lo opuesto a la remoción es la inserción; Hay varias formas de insertar un elemento. Dado que su elemento está en el índice 0 , lo que necesita aquí es anteponerlo a su elemento principal original.
Si simplemente elimina un elemento sin conservar su referencia, se recolectará como basura y ya no podrá usarlo. Entonces almacene una referencia al elemento; también, almacene uno en su padre, ya que ese es el objetivo al que debe anteponer el elemento.
const chatElement = document.getElementsByClassName('_1FlWeEtrJKCnvzX-Y50CLP')[0], chatParent = chatElement.parentElement; let isToggled = false; function doc_keyUp(e) { switch (e.code) { case KeyH: if (isToggled) { chatParent.prepend(chatElement); } else { chatElement.remove(); } isToggled = !isToggled; break; default: break; } } document.addEventListener("keyup", doc_keyUp, false); Alternar la variable isToggled se puede hacer con isToggled = !isToggled; , pero no vuelva a declarar la variable dentro de la función, o de lo contrario no tendrá relación con su variable externa isToggled .
Tenga en cuenta que keyCode está en desuso. Deberías usar code en su lugar.
Hay dos preocupaciones más:
case KeyH: chatElement.toggleAttribute("hidden"); break; en cambio. Consulte la documentación sobre toggleAttribute y sobre la propiedad hidden ._1FlWeEtrJKCnvzX-Y50CLP no parece un nombre de clase estable, sino más bien un nombre aleatorio minimizado. Es muy probable que cambie y que su secuencia de comandos de usuario se rompa. Familiarícese con la API DOM, en particular con document.querySelector , y considere encontrar un selector más estable.