您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
在打印知乎文章网页时,或者另存为pdf时,有很多干扰元素占面积,这个脚本能删除这些干扰元素。但是右侧的分享等按钮是滚动才出现,所以不能立马删除。
// ==UserScript== // @name 美化知乎打印 // @namespace http://tampermonkey.net/ // @version 2024-03-20 // @description 在打印知乎文章网页时,或者另存为pdf时,有很多干扰元素占面积,这个脚本能删除这些干扰元素。但是右侧的分享等按钮是滚动才出现,所以不能立马删除。 // @author Tajang // @match https://zhuanlan.zhihu.com/p/* // @icon https://www.google.com/s2/favicons?sz=64&domain=zhihu.com // @grant none // @license GPL-3.0 // ==/UserScript== window.onload = function () { "use strict"; //删除头部横幅 // 执行 XPath 查询以选择要删除的元素 let xpathResult = document.evaluate( '//*[@id="root"]/div/main/div/div[1]/div/div[1]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ); // 获取查询结果中的第一个节点 let buttonToRemove = xpathResult.singleNodeValue; // 检查按钮元素是否存在 if (buttonToRemove) { // 从父元素中移除按钮元素 buttonToRemove.parentNode.removeChild(buttonToRemove); console.log("头部横幅已删除"); } else { console.log("头部横幅元素找不到"); } //删除底部功能栏 // 执行 XPath 查询以选择要删除的元素 let botbar = document.evaluate( '//*[@id="root"]/div/main/div/article/div[4]/div[1]/div[1]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ); // 获取查询结果中的第一个节点 let buttonToRemove2 = botbar.singleNodeValue; // 检查按钮元素是否存在 if (buttonToRemove2) { // 从父元素中移除按钮元素 buttonToRemove2.parentNode.removeChild(buttonToRemove2); console.log("底部功能栏已删除"); } else { console.log("底部功能栏找不到"); } //删除关注按钮 // 执行 XPath 查询以选择要删除的元素 let gzbar = document.evaluate( '//*[@id="root"]/div/main/div/article/header/div[1]/button', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ); // 获取查询结果中的第一个节点 let buttonToRemove7 = gzbar.singleNodeValue; // 检查按钮元素是否存在 if (buttonToRemove7) { // 从父元素中移除按钮元素 buttonToRemove7.parentNode.removeChild(buttonToRemove7); console.log("关注按钮已删除"); } else { console.log("关注按钮找不到"); } //删除赞同人数 // 执行 XPath 查询以选择要删除的元素 let zanbar = document.evaluate( '//*[@id="root"]/div/main/div/article/header/div[3]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ); // 获取查询结果中的第一个节点 let buttonToRemove3 = zanbar.singleNodeValue; // 检查按钮元素是否存在 if (buttonToRemove3) { // 从父元素中移除按钮元素 buttonToRemove3.parentNode.removeChild(buttonToRemove3); console.log("赞同人数栏已删除"); } else { console.log("赞同人数栏找不到"); } //删除回到顶部按钮 // 执行 XPath 查询以选择要删除的元素 let hdbar = document.evaluate( '//*[@id="root"]/div/div[3]/div/div/button', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ); // 获取查询结果中的第一个节点 let buttonToRemove4 = hdbar.singleNodeValue; // 检查按钮元素是否存在 if (buttonToRemove4) { // 从父元素中移除按钮元素 buttonToRemove4.parentNode.removeChild(buttonToRemove4); console.log("回到顶部按钮已删除"); } else { console.log("回到顶部按钮找不到"); } //删除右侧赞同按钮 // 等待元素出现的函数 function waitForElement(xpath, callback) { const element = document.evaluate( xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue; if (element) { // 如果找到元素,执行回调函数 callback(element); } else { // 如果未找到元素,延迟一段时间后再次尝试 setTimeout(function () { waitForElement(xpath, callback); }, 1000); // 每隔1秒重新尝试一次 } } // 调用 waitForElement 函数,传入元素的 XPath 和删除元素的操作 waitForElement( '//*[@id="root"]/div/main/div/article/div[4]/div[1]/div/button', function (element) { // 删除找到的元素 element.parentNode.removeChild(element); console.log("元素已删除"); } ); //删除右侧分享按钮 function waitForElement2(xpath, callback) { const element = document.evaluate( xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue; if (element) { // 如果找到元素,执行回调函数 callback(element); } else { // 如果未找到元素,延迟一段时间后再次尝试 setTimeout(function () { waitForElement2(xpath, callback); }, 1000); // 每隔1秒重新尝试一次 } } // 调用 waitForElement 函数,传入元素的 XPath 和删除元素的操作 waitForElement2( '//*[@id="root"]/div/main/div/article/div[4]/div[1]/div/div', function (element) { // 删除找到的元素 element.parentNode.removeChild(element); console.log("元素已删除"); } ); //删除底部栏 // 执行 XPath 查询以选择要删除的元素 let footbar = document.evaluate( '//*[@id="root"]/div/main/div/div[2]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ); // 获取查询结果中的第一个节点 let buttonToRemove8 = footbar.singleNodeValue; // 检查按钮元素是否存在 if (buttonToRemove8) { // 从父元素中移除按钮元素 buttonToRemove8.parentNode.removeChild(buttonToRemove8); console.log("底部已删除"); } else { console.log("底部找不到"); } };
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址