// ==UserScript== // @name v2新帖挂件 // @namespace http://tampermonkey.net/ // @version 0.11 // @description v2右侧挂件,展示最近发表的帖子 // @author HeyWeGo // @match *://*.v2ex.com/* // @icon https://www.v2ex.com/static/favicon.ico // @grant GM_xmlhttpRequest // @connect * // @license MIT // @downloadURL https://update.greasyfork.icu/scripts/448472/v2%E6%96%B0%E5%B8%96%E6%8C%82%E4%BB%B6.user.js // @updateURL https://update.greasyfork.icu/scripts/448472/v2%E6%96%B0%E5%B8%96%E6%8C%82%E4%BB%B6.meta.js // ==/UserScript== (function() { function htmlToElement(html) { var template = document.createElement('template'); html = html.trim(); template.innerHTML = html; return template.content.firstChild; } function htmlToElements(html) { var template = document.createElement('template'); template.innerHTML = html; return template.content.childNodes; } let div_wrap = htmlToElements('
最近发布主题刷新
') let list_wrap = div_wrap[0]; let refresh_new_btn = list_wrap.getElementsByClassName("refresh_new")[0]; // let auto_refresh = list_wrap.getElementsByClassName("autorefresh")[0]; var loop; let widget_target = document.getElementById("Rightbar").getElementsByClassName("box")[0]; widget_target.append(list_wrap) let from_refresh = false; refresh_new_btn.addEventListener("click",function(){ from_refresh = true; console.log("刷新列表") let el = document.createElement("div") el.id = "loading_frame" el.innerHTML = "loading"; el.style="height:3000px;position: absolute;background: #ffffffd6;width: 100%;vertical-align: middle;z-index: 999;top:47px;padding-top:200px;" list_wrap.appendChild(el) new_widget(); }) function frag_generate(in_titles,in_links){ let frag = document.createDocumentFragment(); let element = document.createElement('div'); element.id = 'new_list' for (let index = 1; index < in_titles.length; index++) { var nodeText; var puretitle = in_titles[index].textContent.replace(/^\[.*?\]/,''); nodeText = in_titles[index].textContent.match(/^\[.*?\]/)[0]; let tr_head = '
' let tr_head_wrap = tr_head + nodeText + '' + puretitle +'
' element.appendChild(htmlToElements(row_string)[0]); } return frag.appendChild(element); } function new_widget(){ GM_xmlhttpRequest({ url: "https://www.v2ex.com/index.xml", method :"GET", onload:function(xhr){ console.log(xhr.responseText); var data = xhr.responseText let xmlDoc = new DOMParser().parseFromString(data, "text/xml"); let titles=xmlDoc.getElementsByTagName('title') let links=xmlDoc.getElementsByTagName('link') console.log("请求成功") let el = document.getElementById("new_list") if(!!el === true){ el.remove(); } list_wrap.append(frag_generate(titles,links)); if(from_refresh === true){ document.getElementById("loading_frame").remove(); from_refresh = false; } } }) } new_widget() })();