zoenbo 发表于 2021-3-15 20:26

JS大佬帮我看看这个DOM删除问题

本帖最后由 zoenbo 于 2021-3-16 15:13 编辑

<div class="epub-main">
<div id="epub-chapter-01" class="epub-chapter">1234567</div>
<div id="epub-chapter-02" class="epub-chapter">I LOVE PEKING</div>
<div id="epub-chapter-03" class="epub-chapter">HONGKONG</div>
<div id="epub-chapter-04" class="epub-chapter">WHO R U</div>
<div id="epub-chapter-05" class="epub-chapter">FINE 3Q AND U</div>
</div>

页面一直往下拉,<div class="epub-main">里会不断生成新的<div id="epub-chapter-?" class="epub-chapter">新内容</div>,每下拉超过2个<div id="epub-chapter-?" class="epub-chapter"></div>后就会删除前面生成最上面的1个,比如消除了<div id="epub-chapter-01" class="epub-chapter">1234567</div>,以此类推,有没有什么方法阻止JS自动删除<div class="epub-main">下边的生成的元素呢?


用油猴插件或者什么插件能实现呢?

冰茶荼 发表于 2021-3-16 14:54

本帖最后由 冰茶荼 于 2021-3-16 15:25 编辑

如果不想研究它的代码怎么实现的这个功能,就重写remove removeChild方法,让其不能生效,下面是简单的重写

HTMLDivElement.prototype.remove = () =>{console.log("overwrite remove")}
HTMLDivElement.prototype.removeChild = () =>{console.log("overwrite removeChild")}
//可以加入判断

HTMLDivElement.prototype.remove = (e)=>{
    if (e.className == 'epub-chapter') {
      console.log("overwrite");
      return false;
    } else {
      e.remove = HTMLHtmlElement.prototype.remove;
      e.remove()
    }
}

HTMLDivElement.prototype.removeChild = (e)=>{
    if (e.className == 'epub-chapter') {
      console.log("overwrite");
      return false;
    } else {
      e.remove(e)   
    }
}




效果如下

notproblem 发表于 2021-3-15 20:31

找到执行删除操作的那段代码,注释掉它!

zoenbo 发表于 2021-3-15 20:32

notproblem 发表于 2021-3-15 20:31
找到执行删除操作的那段代码,注释掉它!

不是自己的网页,而且目标网页JS全部是混淆了的,反混之后都看不懂的,完全从无下手。

时光书窝 发表于 2021-3-15 20:42

取epub-main的子元素,判断个数,然后删除后面的

zoenbo 发表于 2021-3-15 20:49

时光书窝 发表于 2021-3-15 20:42
取epub-main的子元素,判断个数,然后删除后面的

现在就是想阻止它自动删除那些生成了的元素。

ReLoading 发表于 2021-3-15 21:04

1,编写浏览器扩展插件

2,不想写插件,抓包分析协议,自己编写程序抓取想要的数据

zoenbo 发表于 2021-3-15 21:15

ReLoading 发表于 2021-3-15 21:04
1,编写浏览器扩展插件

2,不想写插件,抓包分析协议,自己编写程序抓取想要的数据

大佬说的这两个解决方法小弟一个都弄不来,对JS这些东西实在是不会,大佬能否帮我写写呢?

ATWooA 发表于 2021-3-15 21:30

你自己把 dom tree 复制下来,它删了你就加回去

zoenbo 发表于 2021-3-15 21:32

ATWooA 发表于 2021-3-15 21:30
你自己把 dom tree 复制下来,它删了你就加回去

这工作量太大了,<div id="epub-chapter-?" class="epub-chapter">总共会生成二三百个,多的则有五六百个,这耗时耗力,既没效率还能让人崩溃~
页: [1] 2
查看完整版本: JS大佬帮我看看这个DOM删除问题