Pixiv 自动展开评论折叠/回复

自动帮你点击 Pixiv 评论区的“查看后续”与“查看回复”按钮,解放双手——

目前為 2023-08-16 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Pixiv 自动展开评论折叠/回复
// @namespace    https://blog.sxjeru.top/
// @version      0.9
// @description  自动帮你点击 Pixiv 评论区的“查看后续”与“查看回复”按钮,解放双手——
// @author       sxjeru
// @icon         https://blog.sxjeru.top/favicon.ico
// @grant        none
// @license      GPL-3.0
// @match        *://www.pixiv.net/*
// ==/UserScript==

(function() {
  'use strict';

  // 自动点击“查看回复”
  const targetText = '查看回复';

  const observer2 = new IntersectionObserver((entries, observer) => {
      entries.forEach(entry => {
          if (entry.isIntersecting && entry.target.innerText === targetText) {
              entry.target.click();
              observer.unobserve(entry.target); // 如果只需要点击一次,可以取消对该元素的观察
          }
      });
  }, { rootMargin: '0px', threshold: 0.1 });

  const elements = Array.from(document.querySelectorAll('div')).filter(el => el.innerText === targetText);
  elements.forEach(el => observer2.observe(el.parentNode)); // 观察每个元素的父元素


  // 自动点击“查看后续”
  var observer = new IntersectionObserver(function(entries) {
      entries.forEach(function(entry) {
          if (entry.isIntersecting) {
              clickButton(entry.target);
          }
      });
  });

  function clickButton(element) {
      var button = document.querySelector('button[aria-controls="' + element.id + '"]');
      if (button) {
          setTimeout(function() {
              button.click();
          }, 300); // 延迟点击按钮

          observer.unobserve(element);
      }
  }

  // 创建一个MutationObserver实例来监视DOM的变化
  var mutationObserver = new MutationObserver(function(mutations) {
      mutations.forEach(function(mutation) {
          if (mutation.type === 'childList') {
              var newElements = mutation.target.querySelectorAll('[id^="expandable-paragraph-"]');

              for (var i = 0; i < newElements.length; i++) {
                  var element = newElements[i];
                  observer.observe(element);

                  // 立即检查新元素是否已经在可视区域内
                  var rect = element.getBoundingClientRect();
                  if (rect.top >= 0 && rect.left >= 0 && rect.bottom <= window.innerHeight && rect.right <= window.innerWidth) {
                      clickButton(element);
                  }
              }
          }
      });
  });

  // 开始监视整个文档的DOM变化
  mutationObserver.observe(document.body, { childList: true, subtree: true });
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址