// ==UserScript==
// @name 自动展开全文(手机版)
// @description CSDN,腾讯新闻,凤凰网,搜狐,简书,百度经验,360doc个人图书馆,中关村,丁香园,夸克百科,百家号
// @version 14
// @author Lemon399
// @match *://blog.csdn.net/*
// @match *://view.inews.qq.com/*
// @match *://*.ifeng.com/*
// @match *://m.sohu.com/*
// @match *://www.jianshu.com/*
// @match *://jingyan.baidu.com/*
// @match *://www.360doc.cn/*
// @match *://m.zol.com.cn/*
// @match *://3g.dxy.cn/*
// @match *://baike.quark.cn/*
// @match *://baijiahao.baidu.com/*
// @run-at document-start
// @namespace https://greasyfork.org/users/452911
// ==/UserScript==
(function () {
let rules = `
! 没有两个 # 的行和 开头为 ! 的行会忽略
! baidu.com##.ec_wise_ad
! :remove() 会用 js 移除元素,:remove() 必须放在行尾
! baidu.com###ad:remove()
! :click() 会用 js 模拟点击元素,必须放在行尾
! baidu.com###btn:click()
! 上面两个可以带参数,格式
! remove(100, 4, 200)
! 代表 首先延时 100 ms,然后执行 4 次,两次间隔 200 ms
//CSDN
blog.csdn.net##DIV#passportbox.passport-login-box
blog.csdn.net##DIV.feed-Sign-weixin
blog.csdn.net##DIV.weixin-shadowbox.wap-shadowbox
blog.csdn.net##DIV.app-shadwbox.wap-shadowbox
blog.csdn.net##DIV.app-box
blog.csdn.net##DIV.passport-login-mark
blog.csdn.net##div.pos-box > a.app-bt-cance.read_more_btn.close-icon:click()(300, 2, 3000)
//腾讯新闻;
view.inews.qq.com##[class^='show-more-article_text']:click()(300, 5, 500)
view.inews.qq.com##button.btn.btn-cancel:click()(400, 5, 500)
//凤凰网;
ifeng.com##[class^='index_tip_']:click()(300, 5, 500)
//搜狐;
m.sohu.com##section#artLookAll.look-all:click()(300, 5, 500)
//百度经验
jingyan.baidu.com##DIV.read-whole:click()(600, 5, 500)
//360doc
www.360doc.cn##div.article_showall > A[href='javascript:void(0)']:click()(300, 5, 500)
//中关村
m.zol.com.cn##span.flex-box.unfold-article-btn__text > span.text:click()(300, 5, 500)
//丁香园
3g.dxy.cn##DIV[class^='contentWrapBottomBtn_']:click()(500, 3, 500)
3g.dxy.cn##div[class^='btns___'] > div[class^='cancel___']:click()(700, 3, 500)
//简书
www.jianshu.com##DIV.download-app-guidance
www.jianshu.com##div.btn-content > BUTTON.cancel:click()(800, 200, 5000)
www.jianshu.com##div.guidance-wrap-item:nth-child(3) > DIV.wrap-item-btn:click()(900, 200, 5000)
//夸克百科
baike.quark.cn##DIV.rax-view.wrc-modal-mask
baike.quark.cn##DIV.rax-view-v2.btn-main-more
baike.quark.cn##DIV.rax-view.wrc-modal-body
baike.quark.cn##DIV.rax-view-v2.btn-main-more:click()(500, 5, 500)
baike.quark.cn##div.rax-view-v2.confirm-cq-btn:nth-child(1) > span.rax-text-v2:click()(600, 5, 500)
//百家号
baijiahao.baidu.com##DIV.foldBtn:click()(2000, 3, 2000)
`,
selarray = [];
function execOperation(sel, param, click) {
setTimeout(() => {
for (let c = parseInt(param[1]); c >= 1; --c) {
setTimeout(() => {
document
.querySelectorAll(sel)
.forEach((a) => (click ? a.click() : a.remove()));
}, parseInt(param[2]) * (c - 1));
}
}, parseInt(param[0]));
}
function pushOperation(sel, op, type) {
let tempParamArray = ["0", "1", "0"];
if (sel.split(op)[1].indexOf(",") > 0)
tempParamArray = sel.split(op)[1].slice(0, -1).split(",");
selarray.push({
sel: sel.split(op)[0],
type: type,
param: tempParamArray,
});
}
function parseFunc(sel) {
if (sel.indexOf(":remove(") > 0) {
pushOperation(sel, ":remove(", 1);
} else if (sel.indexOf(":click(") > 0) {
pushOperation(sel, ":click(", 2);
} else {
selarray.push({ sel: sel, type: 0 });
}
}
let styelem = document.createElement("style");
rules.split("\n").forEach((rule) => {
if (rule.indexOf("!") == 0) {
return;
} else if (rule.indexOf("##") > 0) {
let domains = rule.split("##")[0].split(","),
selector = rule.split("##")[1];
domains.forEach((domain) => {
if (domain.slice(0, 1) == "~") {
if (location.hostname.indexOf(domain.slice(1)) >= 0) return;
} else {
if (location.hostname.indexOf(domain) < 0) return;
}
parseFunc(selector);
});
} else if (rule.indexOf("##") == 0) parseFunc(rule.slice(2));
});
function myfun() {
document.documentElement.appendChild(styelem);
let csel = "";
selarray.forEach((selo) => {
switch (selo.type) {
case 0:
csel += `,${selo.sel}`;
break;
case 1:
execOperation(selo.sel, selo.param, 0);
break;
case 2:
execOperation(selo.sel, selo.param, 1);
break;
}
});
if (csel.length >= 2)
styelem.textContent = csel.slice(1) + " {display:none !important;};";
}
myfun();
})();