minimize document-wide eventlisteners

pull/104/head
Aevann 2023-01-28 12:38:14 +02:00
parent 2006040375
commit a9f169d3be
4 changed files with 38 additions and 22 deletions

View File

@ -21,24 +21,6 @@ function execute(element, attr) {
}
}
document.addEventListener("click", function(e){
const element = e.target
if (element instanceof HTMLImageElement && (element.alt.startsWith('![](')) || element.classList.contains('in-comment-image'))
expandImage()
else if (element.tagName == "TH")
sort_table(element)
else if (element.classList.contains('giphy'))
insertGIF(e.target.src);
else if (element.classList.contains('gif-cat-overlay'))
searchGifs(e.target.firstElementChild.innerHTML);
else if (element.dataset.href)
location.href = element.dataset.href;
if (element.dataset.toggleelement) {
document.getElementById(element.dataset.toggleelement).classList.toggle(element.dataset.toggleattr)
}
});
const onsubmit = document.querySelectorAll('[data-onsubmit]');
for (const element of onsubmit) {
element.onsubmit = (event)=>{
@ -110,6 +92,17 @@ const reload_page = document.getElementById('reload_page')
if (reload_page) {
reload_page.onclick = () => {location.reload()};
}
const TH = document.getElementsByTagName('th')
for (const element of TH) {
element.onclick = () => {sort_table(element)};
}
const toggleelement = document.querySelectorAll('[data-toggleelement]');
for (const element of toggleelement) {
element.onclick = () => {
document.getElementById(element.dataset.toggleelement).classList.toggle(element.dataset.toggleattr);
};
}
function register_new_elements(e) {
@ -142,6 +135,10 @@ function register_new_elements(e) {
for (const element of popover_triggers) {
element.onclick = (e) => {popclick(e)};
}
const expandable = document.querySelectorAll('.in-comment-image, img[alt^="![]("]');
for (const element of expandable) {
element.onclick = () => {expandImage()};
}
}

View File

@ -176,10 +176,12 @@ function autoExpand(field) {
window.scrollTo(xpos,ypos);
};
document.addEventListener('input', function (event) {
if (event.target.tagName.toLowerCase() !== 'textarea') return;
autoExpand(event.target);
}, false);
const textareas = document.getElementsByTagName('textarea')
for (const element of textareas) {
element.addEventListener('input', ()=>{
autoExpand(element)
});
}
function smoothScrollTop()
{

View File

@ -103,6 +103,11 @@ async function getGifs(form) {
<div class="gif-cat-overlay"><div>Meh</div></div>
<img loading="lazy" src="https://media.giphy.com/media/xT77XTpyEzJ4OJO06c/200w.webp">
</div>`
const overlays = document.getElementsByClassName('gif-cat-overlay')
for (const element of overlays) {
element.onclick = () => {searchGifs(element.firstElementChild.innerHTML)};
}
}
document.getElementById('gifs-back-btn').onclick = getGifs;
@ -123,6 +128,11 @@ async function searchGifs(searchTerm) {
const insert = `<img class="giphy" loading="lazy" data-bs-dismiss="modal" src="${url}"></div>`
container.insertAdjacentHTML('beforeend', insert);
}
const giphy = document.getElementsByClassName('giphy')
for (const element of giphy) {
element.onclick = () => {insertGIF(element.src)};
}
}
else {
noGIFs.classList.remove('d-none')

View File

@ -25,3 +25,10 @@ if (!location.href.includes("?context")) {
comments[pid] = {c: newTotal, t: Date.now()}
localStorage.setItem("comment-counts", JSON.stringify(comments))
}
const fake_textarea = document.querySelector('[data-href]')
if (fake_textarea) {
fake_textarea.onclick = () => {
location.href = fake_textarea.dataset.href;
};
}