当前位置: 首页 > wzjs >正文

郑州做网站公司+卓美wordpress安装界面默认英文

郑州做网站公司+卓美,wordpress安装界面默认英文,做论坛app网站,图片制作微信表情包添加油猴脚本,去除知乎中“盐选”付费故事 // UserScript // name 盐选内容隐藏脚本 // namespace http://tampermonkey.net/ // version 0.2 // description 自动隐藏含有“盐选专栏”或“盐选”文字的回答卡片 // author YourName // mat…

添加油猴脚本,去除知乎中“盐选”付费故事

// ==UserScript==
// @name         盐选内容隐藏脚本
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  自动隐藏含有“盐选专栏”或“盐选”文字的回答卡片
// @author       YourName
// @match        *://*.zhihu.com/*
// @grant        none
// ==/UserScript==(function() {'use strict';// 配置const observerConfig = {childList: true,subtree: true,attributes: false};// 目标元素选择器和条件const targets = [{selector: 'div.KfeCollection-OrdinaryLabel-content',keyword: '盐选专栏'},{selector: 'p.KfeCollection-IntroCard-contentName-newStyle-pc',keyword: '盐选'}];const ancestorSelector = 'div.Card.TopstoryItem.TopstoryItem-isRecommend';// 隐藏卡片的通用函数const hideCard = (element) => {const ancestor = element.closest(ancestorSelector);if (ancestor) {ancestor.remove();}};// 检查节点并隐藏匹配的卡片const checkNode = (node) => {targets.forEach(target => {if (node.matches(target.selector) && node.textContent.includes(target.keyword)) {hideCard(node);}Array.from(node.querySelectorAll(target.selector)).forEach(element => {if (element.textContent.includes(target.keyword)) {hideCard(element);}});});};// 创建MutationObserver实例const observer = new MutationObserver(mutations => {mutations.forEach(mutation => {mutation.addedNodes.forEach(node => {if (node.nodeType === Node.ELEMENT_NODE) {checkNode(node);}});});});// 初始检查已存在的内容const initialCheck = () => {targets.forEach(target => {document.querySelectorAll(target.selector).forEach(element => {if (element.textContent.includes(target.keyword)) {hideCard(element);}});});};// 启动观察器observer.observe(document.documentElement, observerConfig);// 页面加载时执行初始检查window.addEventListener('load', initialCheck);
})();

二、附加解释

MutationObserver 是一个用于监听 DOM 树变化的 JavaScript API。它允许你实时检测网页中元素的变化(如添加、删除节点或属性修改),非常适合处理动态加载的内容,比如知乎页面中通过 AJAX 加载的推荐卡片。以下是对脚本中 MutationObserver 使用的详细解释:
  1. MutationObserver 的作用
    MutationObserver 提供了一种高效的方式来监听 DOM 变化,而无需轮询或依赖定时器。在你的脚本中,它用于检测知乎页面中新增的 DOM 节点(例如新加载的推荐卡片),并检查这些节点是否包含“盐选”相关内容,以便隐藏对应的卡片。
  2. 脚本中 MutationObserver 的使用
    以下是脚本中 MutationObserver 的具体实现和步骤:
    a. 创建 MutationObserver 实例
const observer = new MutationObserver(mutations => {mutations.forEach(mutation => {mutation.addedNodes.forEach(node => {if (node.nodeType === Node.ELEMENT_NODE) {checkNode(node);}});});
});

new MutationObserver(callback):创建一个观察者实例,callback 是一个函数,当 DOM 发生变化时会被调用。
回调函数:接收 mutations 参数(一个 MutationRecord 数组),每个 MutationRecord 描述一次 DOM 变化。
处理逻辑:
遍历 mutations 中的每个变化。
检查 mutation.addedNodes(新增的节点列表)。
只处理元素节点(node.nodeType === Node.ELEMENT_NODE),忽略文本节点等。
对每个新增元素调用 checkNode 函数,检查是否需要隐藏卡片。
b. 配置观察器

const observerConfig = {childList: true,subtree: true,attributes: false
};

observerConfig:定义观察器的监听范围和类型:
childList: true:监听目标节点及其子节点的添加或删除。
subtree: true:监听目标节点的所有后代节点(不仅是直接子节点)。
attributes: false:不监听属性变化(因为脚本只关心节点增删)。
这种配置确保脚本能捕捉页面中任何位置的新增节点(如动态加载的推荐卡片)。
c. 启动观察

observer.observe(document.documentElement, observerConfig);

observer.observe(target, config):开始观察指定的目标节点。
目标节点:document.documentElement(即 元素),覆盖整个页面。
配置:使用 observerConfig,监听整个 DOM 树的节点变化。
3. 为什么使用 MutationObserver
知乎页面是动态加载的,推荐卡片可能在页面滚动或刷新时通过 JavaScript 插入 DOM。如果只在页面加载时检查(initialCheck),会漏掉后续加载的内容。MutationObserver 的优势在于:
实时性:它能立即响应 DOM 变化,无需手动轮询。
高效性:相比定时器(如 setInterval),它只在 DOM 实际变化时触发,性能更好。
全面性:通过 subtree: true,可以监控整个页面,包括深层嵌套的动态内容。
4. 脚本中 MutationObserver 的工作流程
初始化:
创建 MutationObserver 实例,定义当 DOM 变化时检查新增节点的逻辑。
配置为监听整个 DOM 树的节点增删。
启动:
开始观察 元素,监控页面中任何新增节点。
处理变化:
当页面加载新内容(例如滚动时插入新卡片),MutationObserver 检测到 addedNodes。
对每个新增元素节点调用 checkNode,检查是否匹配目标选择器(div.KfeCollection-OrdinaryLabel-content 或 p.KfeCollection-IntroCard-contentName-newStyle-pc)和关键字(“盐选专栏”或“盐选”)。
如果匹配,找到祖先卡片(div.Card.TopstoryItem.TopstoryItem-isRecommend)并移除。
初始检查补充:
由于 MutationObserver 只监听变化,脚本还通过 window.addEventListener(‘load’, initialCheck) 检查页面加载时已存在的卡片。
5. 代码中的优化点
节点类型检查:脚本通过 node.nodeType === Node.ELEMENT_NODE 过滤非元素节点(如文本节点),提高效率。
选择器检查:checkNode 使用 matches 和 querySelectorAll,确保只处理符合条件的元素。
去重逻辑:通过 hideCard 函数统一卡片移除逻辑,避免重复代码。
6. 可能的改进
性能优化:如果页面变化频繁,可以限制观察范围(例如只观察某个容器如 div.Topstory-container),减少不必要的检查。
断开观察:在某些场景下(例如页面切换),可以通过 observer.disconnect() 停止观察以释放资源。
错误处理:添加 try-catch 块处理 DOM 操作中的潜在异常。
7. 总结
MutationObserver 在脚本中用于实时监控知乎页面中的 DOM 变化,捕获动态加载的推荐卡片,并检查是否包含“盐选”相关内容。通过配置 childList 和 subtree,它能高效地覆盖整个页面,确保新插入的卡片被及时处理。结合初始检查,脚本实现了对静态和动态内容的全面覆盖,完美适配知乎的动态加载场景。


文章转载自:

http://0bDhRDnz.nhqrr.cn
http://4MH7qeZy.nhqrr.cn
http://R9RHbz8Z.nhqrr.cn
http://Y0vL71UW.nhqrr.cn
http://9kJnsBNF.nhqrr.cn
http://fWEqyhDZ.nhqrr.cn
http://pGwluefW.nhqrr.cn
http://mzJGFm4c.nhqrr.cn
http://vhDhzAnA.nhqrr.cn
http://MpkvKzhC.nhqrr.cn
http://MDfKiLjm.nhqrr.cn
http://C5kQast5.nhqrr.cn
http://Ra5fRheB.nhqrr.cn
http://bT8lIJMd.nhqrr.cn
http://pHGJ1Xce.nhqrr.cn
http://h5Emo29H.nhqrr.cn
http://RBWcCTiE.nhqrr.cn
http://OS949D4w.nhqrr.cn
http://WIKGW3yO.nhqrr.cn
http://GldE6QCO.nhqrr.cn
http://XoN0jOOV.nhqrr.cn
http://0bSjRBiG.nhqrr.cn
http://HqvELS41.nhqrr.cn
http://hjN60TyW.nhqrr.cn
http://6U2k88ih.nhqrr.cn
http://9lPAh2Wx.nhqrr.cn
http://W1OXKWZi.nhqrr.cn
http://tqnnMvLD.nhqrr.cn
http://zRxjKA3n.nhqrr.cn
http://eRV1o8sl.nhqrr.cn
http://www.dtcms.com/wzjs/755556.html

相关文章:

  • 南通市网站建设建设网站要买服务器
  • 网站管理系统软件轻奢风格装修图片
  • 建立网站的主要步骤三门峡网站网站建设
  • 八卦岭网站建设商城网站建设的注意事项
  • jsp网站开发技术四川省自贡市大安区代码
  • 档案网站建设规范有哪些成都有什么好玩的地方 景点
  • 电商建站价格社交博客网站开发
  • 舒城县建设局网站服务器上给网站做301跳转
  • 导游网站后台东莞做网站的联系电
  • 杭州网站制作专业免费注册qq
  • 唐山网站建设电话漳州 网站设计
  • 网站备案要如何取消wordpress主题中文乱码
  • 国外优惠卷网站如何做嵌入式开发是什么专业
  • WordPress网站登录邮件提醒母婴门户网站模板
  • 国内知名的网站建设公司小说网站怎么做防采集
  • 网站建设平台分析苏州哪里做网站
  • 网上怎样做电缆网站wordpress 4.4.8
  • 广东建设职业技术学院网站芜湖网站优化
  • 杭州seo相关网站深圳市住房和城乡建设局
  • 前端网站效果有哪些小程序免费推广平台
  • 网站建设和维护做什么个人网站建设规划
  • 做网站常用的英文字体wordpress 优化 插件
  • idea可以做网站吗what is wordpress
  • 小榄做网站企业做外贸有哪些免费的网站有哪些
  • 电商网站开发技术与服务器给个网址2021年能看的
  • 化妆品网站建设实训总结企业网站接入微信支付
  • 网站推广策划案怎么选基金项目实验室信息网站建设
  • 网站如何注销百度头条怎么做网站
  • 营销型网站管理系统在网上那里能接单做网站
  • wordpress 多站点用户wordpress做淘宝的交流插件