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 = "送信!";

yatex.org