折叠回复少的页面;在 v2ex 主页面显示鼠标悬停内容
// ==UserScript==
// @name v2ex 免跳转浏览 + 折叠回复少的页面
// @namespace ThomasKara
// @run-at document-end
// @match http*://v2ex.com
// @match http*://*.v2ex.com
// @version 0.1.3
// @description 折叠回复少的页面;在 v2ex 主页面显示鼠标悬停内容
// ==/UserScript==
function insertAfter(newNode, existingNode) {
existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling);
}
function getBox(){
let box;
if (location.pathname.startsWith("/go/")){
box=Array.from(document.querySelectorAll("#Main .box")).slice(-1);
} else {
box=Array.from(document.querySelectorAll("#Main .box"));
}
return box[0];
}
function getCells(box){
let l=box.querySelectorAll("*>.cell")
if (l.length){
return l
}
l=box.querySelectorAll(".box #TopicsNode .cell.item")
if (l.length){
return l
}
return []
}
// 折叠回复小于等于1的页面
(function () {
'use strict';
var box=getBox();
var l=getCells(box);
var less=[""];
if (l.length){
for (var i=0;i<l.length;i++){
var tr=l[i].querySelector("tr");
if (!tr){
continue;
}
if (tr.lastElementChild&&tr.lastElementChild.children.length>1){
continue;
}
if (tr.lastElementChild.querySelector("a")&&parseInt(tr.lastElementChild.querySelector("a").innerText)>1){
continue;
}
l[i].style="padding: 0 10px;overflow: hidden;height: 1.3rem;border: none;";
l[i].querySelector(".item_title").style.fontSize=".9em";
less.push(l[i]);
}
less[0]=less.length+" - "+Math.floor(100*(l.length-less.length)/l.length)+"% ("+(l.length-less.length)+"/"+l.length+")";
box.append(...less);
console.log(less[0]);
}
})();
// 免跳转预览
(function () {
'use strict';
var box=getBox();
var l=getCells(box);
var ifrm=document.querySelector("iframe.fast-viewer");
var blocker=document.querySelector("div.blocker");
if (l.length){
document.querySelector("#Rightbar").style.display="none";
if (!ifrm){
ifrm=document.createElement("iframe");
ifrm.classList.add("fast-viewer");
ifrm.style="height: 80vh;border: 1px solid gray;z-index: 1;";
blocker=document.createElement("div");
blocker.classList.add("blocker");
blocker.style="position: fixed; bottom: 0px; width: 100%;";
blocker.title="this area is blocked to prevent falling, try to scroll up";
}
for (var i=0;i<l.length;i++){
var a=l[i].querySelector(".item_title a");
if (a){
let current=l[i];
let a=current.querySelector(".item_title a");
a.onmouseenter=()=>{
if (ifrm.src!=a.href){
ifrm.src=a.href;
let margin=40;
ifrm.style.width=document.body.getBoundingClientRect().width-margin-10+"px";
ifrm.style.marginLeft=(margin-current.getBoundingClientRect().x)+"px";
insertAfter(ifrm, current);
window.scrollTo(0, current.getBoundingClientRect().top + document.documentElement.scrollTop)
ifrm.onload=()=>{
let replyBox=ifrm.contentWindow.document.querySelector("#reply-box")
if (replyBox){
replyBox.style.display="none";
}
ifrm.contentWindow.document.querySelector("#Bottom").style.display="none";
};
blocker.style.height=window.innerHeight-ifrm.offsetHeight-current.offsetHeight+"px";
insertAfter(blocker, ifrm);
}
};
}
}
}
})();