# HG changeset patch # User HIROSE Yuuji # Date 1609720177 -32400 # Node ID 9f237a8f550d3f84d391036fb796273dd5bc27e1 # Parent 5acef432b1de1a94baaa9842c98c83465ab2d475 Add eventListener to newly added TR contents diff -r 5acef432b1de -r 9f237a8f550d s4-main.js --- a/s4-main.js Sun Jan 03 14:44:56 2021 +0900 +++ b/s4-main.js Mon Jan 04 09:29:37 2021 +0900 @@ -79,7 +79,6 @@ } } function registPjaxViewers(aHrefList) { - // if (isOlderJS) return; let apos=art_m_list.length; for (let a of aHrefList) { let href = a.getAttribute("href"); @@ -108,6 +107,12 @@ } } } + function registInsertDirect(aHrefList) { + for (i of aHrefList) + if (i.getAttribute("href").match(/^#[0-9]+$/)) + if (RegExp.lastMatch == i.innerHTML) + i.addEventListener("click", insertRedirect, false) + } var ajaxSubmit; function replAddNews(newtable) { let newids = [], idlist=[]; @@ -128,6 +133,13 @@ current = document.querySelectorAll('td[class="repl"]'); let last=current[current.length-1], tbody = last.parentNode.parentNode; + let addEventsToNewTr = function(tr) { + let td = tr.getElementsByTagName("td"), + td0 = td[0], td1 = td[1]; + td0.classList.add("new"); + registInsertDirect(td0.querySelectorAll("a[href]")); + registPjaxViewers(td1.querySelectorAll("a[href]")); + } // Now reconstruct articles with merge-sort like method outer: for (; ncur= nid) { - ntr.getElementsByTagName("td")[0].classList.add("new"); + addEventsToNewTr(ntr); tbody.insertBefore(ntr, otr); if (oid==nid) otr.remove(); cnt++; @@ -150,10 +162,8 @@ } // Append absolutely new articles. ntr = n.parentNode; - ntr.getElementsByTagName("td")[0].classList.add("new"); + addEventsToNewTr(ntr) tbody.appendChild(ntr); - ntr.scrollIntoView({behavior: "smooth"}); - registPjaxViewers(ntr.querySelectorAll("a[href]")); ntr.classList.add("dissolving"); let localntr = ntr; setTimeout(() => { @@ -598,10 +608,7 @@ for (i of check) { i.addEventListener("click", insertRedirect, false); } - for (i of document.querySelectorAll("a[href]")) - if (i.getAttribute("href").match(/^#[0-9]+$/)) - if (RegExp.lastMatch == i.innerHTML) - i.addEventListener("click", insertRedirect, false) + registInsertDirect(document.querySelectorAll("a[href]")); for (i of document.querySelectorAll('input#c[value="送信"]')) { let b = document.createElement("button"); b.textContent = "送信!";