![我如何才能永久删除每个网页上的元素?](https://linux22.com/image/1469138/%E6%88%91%E5%A6%82%E4%BD%95%E6%89%8D%E8%83%BD%E6%B0%B8%E4%B9%85%E5%88%A0%E9%99%A4%E6%AF%8F%E4%B8%AA%E7%BD%91%E9%A1%B5%E4%B8%8A%E7%9A%84%E5%85%83%E7%B4%A0%EF%BC%9F.png)
我在装有 OSX El Capitan 的 Mac 上运行 Safari,我想要一种方法来永久删除域中每个网页中的元素。
我不想暂时做出改变。我希望我的答案能在 Safari 中工作,我不得不说两次,因为愚蠢的编辑和其他用户继续向我指出不适用于 Firefox 的解决方案这里。
即https://www.google.com/search?num=100&client=safari&rls=en&q=test&oq=test
仍然有相同的元素被阻止https://www.google.com/
我知道 Firefox 的扩展程序可以做到这一点 - “永久删除“ 和 ”永久删除“——但是有没有办法在 Safari 中做到这一点,或者是否必须制作扩展才能完成这项任务?
答案1
一种方法是使用允许将脚本添加到网页的扩展。
我使用了扩展快捷脚本适用于 Safari。我创建了以下脚本,每次打开网页时都会运行并按类名删除:
removeElementsByClass('<className to delete>');
function removeElementsByClass(className){
var elements = document.getElementsByClassName(className);
while(elements.length > 0){
elements[0].parentNode.removeChild(elements[0]);
}
}
另一种方法是通过项目 ID 删除。
removeElementsById('<id to delete>');
function removeElementsById(id){
var elements = document.getElementById(id);
while(elements.length > 0){
elements[0].parentNode.removeChild(elements[0]);
}
}
这也可以通过使用 jquery 创建函数来实现。
removeElementsById('#<id to delete>');
removeElementsByClass('.<className to delete>');
function removeElementsByClass(className){
$(className).remove();
}
function removeElementsById(id){
$(id).remove();
}
注意:此解决方案独立于浏览器和操作系统。它只需要您找到一个允许您在网站上运行脚本的扩展程序。
为网站定制 JavaScript 将与 Chrome 兼容。