没忍住给论坛写了个首页预览帖子的油猴脚本 [复制链接]

帖子链接已复制到剪贴板
amdyyds (UID: 2291) 9月前
帖子已经有人评论啦,不支持删除!

3325 17

本论坛没有无刷新加载,打开一个帖子后,如果要返回那肯定只能点后退,但是有时候会发现这样跳来跳去的会很慢,导致我每次都要在新标签页打开帖子,不看了直接关闭。

然后就写了一个简单的油猴插件,当鼠标指到帖子标题时,自动获取帖子内容,包括评论。当鼠标移出内容框或一条帖子整个区域就会自动关闭。

演示:

 

 

 

 

当鼠标没进入红框时,移出蓝框自动消失;

当鼠标进入红框后,移出红框即可消失。

显示的是全部内容,帖子内容+评论区,可以发表评论。

但是这样有个问题会的导致红框下面的内容会被遮挡住,大佬们可以给个建议

 

代码奉上:

// ==UserScript==
// @name         大佬论坛帖子预览
// @version      1.0
// @description  首页即可浏览帖子内容!
// @author       Oyiso
// @match        *://dalao.net
// @match        *://dalao.net/index*
// @match        *://www.dalao.net
// @match        *://www.dalao.net/index*
// @icon         https://dalao.net/view/img/ioslogo.png
// ==/UserScript==

(function() {
  'use strict';

  const list = document.querySelectorAll('.threadlist li');
  if(list.length > 0) {
    let style = document.createElement('style');
    style.innerHTML = `
      .threadlist li {
        position: relative;
      }
      .oyiso-box {
        display: none;
        position: absolute;
        bottom: -400px;
        left: 0;
        width: 100%;
        height: 400px;
        overflow: auto;
        background-color: #fff;
        background: url(/img/937241919.png) repeat center top;
        border-radius: 10px;
        box-shadow: 0 0 15px 1px rgb(0 0 0 / .2);
        z-index: 999;
        padding: 20px;
      }
      .threadlist li.active .oyiso-box {
        display: block;
      }
      .oyiso-box .row .main {
        padding: 0;
      }
    `;
    document.head.appendChild(style);
  }
  list.forEach((li) => {
    let box = document.createElement('div');
    box.className = 'oyiso-box';
    box.innerHTML = 'Loading...';
    li.appendChild(box);
    let a = li.querySelector('.media-body .subject a');
    a.addEventListener('mouseenter', ()=> {
      li.classList.add('active');
      let url = a.getAttribute('href');
      requestData(url, box);
    });

    li.addEventListener('mouseleave', ()=> {
      removeData(li, box);
    });

    box.addEventListener('mouseleave', ()=> {
      removeData(li, box);
    });
  });

  function removeData(li, box) {
    li.classList.remove('active');
    box.innerHTML = 'Loading...';
  }

  function requestData(url, box) {
    fetch(url)
    .then(response => response.text())
    .then(data => {
      if (data) {
        let parser = new DOMParser();
        let doc = parser.parseFromString(data, 'text/html');
        let content = doc.querySelector('.row .main');
        box.innerHTML = content.innerHTML;
      }
    });
  }
})();
这家伙太懒了,什么也没留下。
已有评论 (17)
提示:您必须 登录 才能查看此内容。
创建新帖
广告推广点击空位自助购买