// ==UserScript== // @name 油猴中文改帖子默认排序 // @namespace http://tampermonkey.net/ // @version 0.1 // @description 将油猴中文网的帖子默认排序改为发帖时间 // @author hua // @match https://bbs.tampermonkey.net.cn/forum-*-*.html // @grant unsafeWindow // @run-at document-start // ==/UserScript== changed_orderby = false changed_thread = false let observer = new MutationObserver(function (mutationsList) { for (let mutation of mutationsList) { if (mutation.type === 'childList' && mutation.addedNodes.length > 0) { if (changed_orderby && changed_thread) { observer.disconnect() } if (!changed_orderby) { let orderby_node = document.querySelector('#filter_orderby > span') if (orderby_node){ changed_orderby = true orderby_node.textContent = '发帖时间' } } if (!changed_thread) { let normal_thread_nodes = document.querySelectorAll('[id^="normalthread_"]') console.log(normal_thread_nodes.length); if (normal_thread_nodes.length > 0) { changed_thread = true sort_thread_node() } } } } }); observer.observe(document, { childList: true, subtree: true }); function sort_thread_node() { let table_node = document.querySelector('#threadlisttableid') let thread_node_list = Array.from(table_node.children) let sorted_node_list = [] for (let node of thread_node_list) { let id = node.getAttribute('id') if (id && id.indexOf('normalthread') === 0) { break } sorted_node_list.push(node) } if (sorted_node_list.length > 0) { thread_node_list.splice(0, sorted_node_list.length) } thread_node_list.sort(function (node_a, node_b) { let public_str_time_a = node_a.querySelector('td > div > p > em:nth-child(3) > span').textContent let public_str_time_b = node_b.querySelector('td > div > p > em:nth-child(3) > span').textContent return new Date(public_str_time_b) - new Date(public_str_time_a) }); Array.prototype.push.apply(sorted_node_list, thread_node_list) table_node.innerHTML = "" sorted_node_list.forEach(function (node) { table_node.append(node) }) }