请选择 进入手机版 | 继续访问电脑版

北海实用推荐

搜索

联系客服

查看: 651|回复: 0

[Tampermonkey脚本JS] DZ回复可见助手

[复制链接]

141

主题

147

帖子

654

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
654
发表于 2017-12-9 18:56:32 | 显示全部楼层 |阅读模式
  1. // ==UserScript==
  2. // @name        DZ回复可见助手
  3. // @namespace   wdssmq
  4. // @description 简化论坛中的回复可见操作(QQ群:189574683)
  5. // @link        https://greasyfork.org/zh-CN/scripts/25941
  6. // @version     1.3.2
  7. // @include     *forum.php?mod=viewthread&tid=*
  8. // @include     *forum.php?mod=post&action=reply*replysubmit=yes
  9. // @include     *viewthread.php?tid=*
  10. // @include     *thread*.html
  11. // @grant       none
  12. // ==/UserScript==
  13. (function () {
  14.   var lasScrollHeight = 0,
  15.   cooName = location.href.replace(/:/g, ""),
  16.   cooValue = parseInt(getcookie(cooName)) || 0;
  17.   // cooValue = 0;

  18.   //document.addEventListener('DOMContentLoaded', function () {fnMain(1);}, true);
  19.   window.addEventListener('load', fnMain, true);
  20.   //document.addEventListener("DOMNodeRemoved",function(e) {
  21.   //console.log("remove",e.target);
  22.   //});
  23.   document.addEventListener("DOMNodeInserted", function (e) {
  24.     console.log("insert", e.target.innerHTML);
  25.     if (/showhide|本帖隐藏的内容/.test(e.target.innerHTML)) {
  26.       fnEnd();
  27.     }
  28.   });
  29.   function fnEnd() {
  30.     if (!fnViewEl($n('.showhide'), 0)) {
  31.       fnViewEl($n('.showhide'), 0);
  32.     }
  33.     if ($n('.showhide a')) {
  34.       var domA = $n('.showhide a');
  35.       if ($n(".showhide span a")) {
  36.         domA = $n(".showhide span a");
  37.       }
  38.       if ($n(".showhide .download-con a")) {
  39.         domA = $n(".showhide .download-con a");
  40.       }
  41.       var link = domA.href;
  42.       if (domA.onclick) {
  43.         showWindow('attachpay', link);
  44.         return null;
  45.       } else {
  46.         if (link.indexOf("attachment") > -1) {
  47.           link += "&isdown=1";
  48.           domA.href = link;
  49.           console.log(link);
  50.         }
  51.         window.open(link);
  52.       }
  53.     }
  54.     if ($n('.showhide') && $n('#threadtitle h1')) {
  55.       var title = $n('#threadtitle h1');
  56.       var newname = text(title);
  57.       newname = newname.replace(/\s-.+$/g, '');
  58.       newname = newname.replace(/\..+(\.\d{4})/g, '$1');
  59.       var ed2k = $n(".smalltextjuse a").href;
  60.       ed2k = ed2k.replace(/%[^%]{2}\.?/g, '');
  61.       $na(".showhide")[0].innerHTML = $na(".showhide")[0].innerHTML.replace(/<\/h4>/, "</h4>" + newname + "<br />" + ed2k + "<br />");
  62.       $n('#inp-query').value = newname;
  63.     }
  64.   }
  65.   function fnMain() {
  66.     if ($n('.locked') && !$n('.showhide')) {
  67.       if (cooValue < 5)
  68.         setTimeout(fnMain, 467);
  69.       else
  70.         return;
  71.       if (lasScrollHeight !== document.body.scrollHeight && cooValue !== 0) {
  72.         lasScrollHeight = document.body.scrollHeight;
  73.         return;
  74.       }
  75.       cooValue++;
  76.       console.log(cooValue);
  77.       setcookie(cooName, cooValue, 3600);
  78.       if ($n('.locked a')) {
  79.         var aryDomA = $na('.locked a'),
  80.         domA = $n('.locked a'),
  81.         link = $n('.locked a').href;
  82.         aryDomA.forEach(function (el) {
  83.           if (el.innerHTML.indexOf("回复") > -1) {
  84.             domA = el;
  85.             link = el.href;
  86.           }
  87.         });
  88.         setTimeout(function () {
  89.           fnViewEl(domA, 0);
  90.         }, 1000);
  91.         if (cooValue > 1)
  92.           return;
  93.         domA.addEventListener('mouseover', function () {
  94.           if (domA.onclick) {
  95.             // showWindow('attachpay', link);
  96.             showWindow('reply', link);
  97.             setTimeout(function () {
  98.               $n("textarea").innerHTML = "感谢分享!";
  99.             }, 700);
  100.           }
  101.         }, false);
  102.       }
  103.     }
  104.     fnEnd();
  105.   }
  106.   function fnViewEl(el, n) {
  107.     // console.log(n);
  108.     if (el) {
  109.       document.documentElement.scrollTop = n;
  110.       if (!fnIsElInViewport(el)) {
  111.         // document.documentElement.scrollTop = n;
  112.         n += 50;
  113.         return fnViewEl(el, n);
  114.       } else {
  115.         document.documentElement.scrollTop = n + (window.innerHeight || document.documentElement.clientHeight) / 3;
  116.         return true;
  117.       }
  118.     } else {
  119.       return false;
  120.     }
  121.   }
  122.   function fnIsElInViewport(el) {
  123.     var rect = el.getBoundingClientRect();
  124.     return (rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && /*or $(window).height() */
  125.       rect.right <= (window.innerWidth || document.documentElement.clientWidth) /*or $(window).width() */);
  126.   }
  127.   function text(e) {
  128.     var t = '';
  129.     //如果传递的是元素,则取其子元素,
  130.     //否则假定它是一个数组
  131.     e = e.childNodes || e;
  132.     //检查所有子节点
  133.     for (var j = 0; j < e.length; j++) {
  134.       //如果它不是一个元素,追加其文本到返回值
  135.       //否则,对其所有子元素递归处理
  136.       t += e[j].nodeType != 1 ?
  137.       e[j].nodeValue : text(e[j].childNodes);
  138.     }
  139.     //返回所得的文本
  140.     return t;
  141.   }
  142.   function $n(e) {
  143.     return document.querySelector(e);
  144.   }
  145.   function $na(e) {
  146.     return document.querySelectorAll(e);
  147.   }
  148. })();
复制代码


请关注公众号:“北海实用推荐”,期待我们下次更新。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|北海实用推荐 ( 桂ICP备15001999号-2  

GMT+8, 2018-7-23 01:57 , Processed in 1.050541 second(s), 10 queries , Xcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表