Mercurial > hgrepos > hgweb.cgi > s4
changeset 906:9f237a8f550d
Add eventListener to newly added TR contents
author | HIROSE Yuuji <yuuji@gentei.org> |
---|---|
date | Mon, 04 Jan 2021 09:29:37 +0900 |
parents | 5acef432b1de |
children | ce1a355e7cb1 |
files | s4-main.js |
diffstat | 1 files changed, 16 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- 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<newids.length; ncur++) { n = newids[ncur]; @@ -141,7 +153,7 @@ oid = getArticleID(o); if (!oid || oid=="") continue; if (oid >= 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 = "送信!";