Filter Greasemonkey亵渎过滤脚本用于Youtube评论

Filter Greasemonkey亵渎过滤脚本用于Youtube评论,filter,youtube,greasemonkey,profanity,Filter,Youtube,Greasemonkey,Profanity,我不知道我在说什么,我走了 在某些页面上,它会过滤它们,而其他页面(如Youtube)的评论则不起作用。 为了在这些站点中工作,需要更改哪些代码 // ==UserScript== // @name profanity_filter // @namespace localhost // @description Profanity filter // @include * // @version 1 // @grant none // ==/User

我不知道我在说什么,我走了

在某些页面上,它会过滤它们,而其他页面(如Youtube)的评论则不起作用。 为了在这些站点中工作,需要更改哪些代码

// ==UserScript==
// @name        profanity_filter
// @namespace   localhost
// @description Profanity filter
// @include     *
// @version     1
// @grant       none
// ==/UserScript==

function recursiveFindTextNodes(ele) {
  var result = [];
  result = findTextNodes(ele,result);
  return result;
}

function findTextNodes(current,result) {
  for(var i = 0; i < current.childNodes.length; i++) {
    var child = current.childNodes[i];
    if(child.nodeType == 3) {
      result.push(child);
    }
    else {
      result = findTextNodes(child,result);
    }
  }
  return result;
}

var l = recursiveFindTextNodes(document.body);

for(var i = 0; i < l.length; i++) {
  var t = l[i].nodeValue;
  t = t.replace(/badword1|badword2|badword3/gi, "****");
  t = t.replace(/badword4/gi, "******");
  t = t.replace(/badword5|badword6|badword7/gi, "*****");
  t = t.replace(/badword8/gi, "******");
  l[i].nodeValue = t;
}
/==UserScript==
//@name亵渎过滤器
//@namespace localhost
//@description亵渎过滤器
//@包括*
//@version 1
//@grant none
//==/UserScript==
函数recursiveFindTextNodes(ele){
var结果=[];
结果=findTextNodes(元素,结果);
返回结果;
}
函数findTextNodes(当前、结果){
对于(var i=0;i

*将代码中的亵渎替换为badword

Youtube评论是异步加载的,在页面加载后很长一段时间(默认情况下,用户脚本在
DOMContentLoaded
事件中执行),因此,您需要将代码包装为回调函数,其中包含注释容器或
MutationObserver
setInterval
的选择器

replaceNodes();//处理页面
WaitForkEyements('.comment text content',replaceNodes);
函数replaceNodes(){
..............
..............
}
使用
setInterval
代替waitfork选项:

replaceNodes();//处理页面
var interval=setInterval(函数(){
if(document.querySelector('.comment text content')){
间隔时间;
替换节点();
}
}, 100);
函数replaceNodes(){
..............
..............
}
注意:不要盲目地将值分配给节点,首先检查它是否已更改,以避免重新计算布局:

if(l[i].nodeValue!=t){
l[i].nodeValue=t;
}

将演示链接添加到您正在谈论的某个评论页面。@wOxxOm www.youtube.com/watch?v=AlSDUhNkrQYI不知道如何编写代码。我从www.reddit.com/r/awesomenauts/comments/32fim8/a_亵渎_过滤器_扩展_你的浏览器/我猜如何更改它,使它写***或+++,而不是Zork,Kewlu,Glati。我不知道该怎么处理这段代码。也许你可以做一个完整的代码