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 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
找到执行删除操作的那段代码,注释掉它!
不是自己的网页,而且目标网页JS全部是混淆了的,反混之后都看不懂的,完全从无下手。 取epub-main的子元素,判断个数,然后删除后面的 时光书窝 发表于 2021-3-15 20:42
取epub-main的子元素,判断个数,然后删除后面的
现在就是想阻止它自动删除那些生成了的元素。 1,编写浏览器扩展插件
2,不想写插件,抓包分析协议,自己编写程序抓取想要的数据 ReLoading 发表于 2021-3-15 21:04
1,编写浏览器扩展插件
2,不想写插件,抓包分析协议,自己编写程序抓取想要的数据
大佬说的这两个解决方法小弟一个都弄不来,对JS这些东西实在是不会,大佬能否帮我写写呢? 你自己把 dom tree 复制下来,它删了你就加回去 ATWooA 发表于 2021-3-15 21:30
你自己把 dom tree 复制下来,它删了你就加回去
这工作量太大了,<div id="epub-chapter-?" class="epub-chapter">总共会生成二三百个,多的则有五六百个,这耗时耗力,既没效率还能让人崩溃~
页:
[1]
2