没忍住给论坛写了个首页预览帖子的油猴脚本

amdyyds (UID: 2291) 2月前

1578 4

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

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

演示:

 

 

 

 

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

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

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

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

 

代码奉上:

// ==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;
      }
    });
  }
})();
这家伙太懒了,什么也没留下。
已有评论 (4)
  • 头像
    amdyyds (UID: 2291) @Ta
    2月前
    1
    小胖脸 我都是鼠标中键新标签页打开

    我是按住ctrl点击

  • 头像
    amdyyds (UID: 2291) @Ta
    2月前
    2
    阿呆 和这个类https://dalao.net/thread-14572.htm

    我比较喜欢鼠标指上去显示内容,不改变原本布局

  • 头像
    amdyyds (UID: 2291) @Ta
    2月前
    3

    头部信息更新一下,支持www

    // ==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==
  • 头像
    amdyyds (UID: 2291) @Ta
    2天前
    4
    互联网讨生活 我在油猴搜 没搜到

    直接新建脚本,复制上面提供的代码就行了

    • 大佬论坛
      5
      登录后才可回帖  登录 注册

本站同款香港KC服务器 酷盾安全联盟 智能优化防护 ROOVPS 便宜服务器 盾云SCDN 月付只需1元起 点我免费领取大流量卡