2012-04-21 22 views
1

我想这样做是最简单的方法,我不介意它是否允许元素加载然后隐藏它。基本上我想采取与之前对YouTube评论拦截器所做的不同处理,但我无法弄清楚如何让我的扩展程序阻止评论。我知道有限的HTML/CSS/JavaScript,但我不确定从哪里开始。我已经知道需要一致地从页面中删除哪些元素,但不知道如何告诉Chrome来隐藏它们。如何让我的扩展程序阻止页面上的元素?

编辑:如果可能,请进一步阅读我想根据他们的<div>在HTML中撰写某些章节。

+1

['chrome.webRequest'](http://code.google.com/chrome/extensions/webRequest.html)API可用于取消某些请求。 ['beforeload'事件](http://stackoverflow.com/questions/4395525/safari-extension-beforeload-event-documentation)可用于检测资源负载。 'DOMNodeInserted'事件可以用来检测节点插入。 – 2012-04-21 08:55:37

+1

这[开源的Chrome扩展](https://github.com/maripo/CustomFilter)也这样做 – 2017-04-06 12:05:23

回答

4

这里是我的Facebook广告的禁用:

的manifest.json

{ 
    "name": "Facebook Ads Disabler", 
    "version": "0.0.1", 
    "description": "Disable side ads on facebook! By Alexander Piechowski.", 
    "content_scripts": [ 
    { 
     "matches": [ 
     "http://*.facebook.com/*","https://*.facebook.com/*"], 
     "js": ["main.js"], 
     "run_at": "document_end", 
     "all_frames": true 
    } 
    ] 
} 

main.js

function remove(){ 
try 
    { 
    document.getElementById('pagelet_ego_pane_w').innerHTML = ''; 
    } 
catch(err) 
    { 
    //Skip if "pagelet_ego_pane_w" div tag isn't on this page 
    } 
    try 
    { 
     document.getElementById('pagelet_ego_pane').innerHTML = ''; 
    } 
catch(err) 
    { 
    //Skip if "pagelet_ego_pane" div tag isn't on this page 
    } 
    try 
    { 
     document.getElementById('pagelet_side_ads').innerHTML = ''; 
    } 
catch(err) 
    { 
    //Skip if "pagelet_side_ads" div tag isn't on this page 
    } 
     try 
    { 
     document.getElementById('fbPhotoSnowliftAdsSide').innerHTML = ''; 
    } 
catch(err) 
    { 
    //Skip if "fbPhotoSnowliftAdsSide" div tag isn't on this page 
    } 
console.log('All ads have been removed.'); 
setTimeout(function(){remove();},2000); 
} 
remove(); 

这使得该ID的完全空白,重新运行每一个的全部内2秒钟,当我去Facebook的新页面。

相关问题