// ==UserScript== // @name Remove ad posts @VK // @version 0.3.20160919 // @description removes ad posts from feed and walls by keywords // @match *://*.vk.com/* // @copyright 2016, StSav012 // @author StSav012 // @namespace vkap // @run-at document-end // @downloadURL none // ==/UserScript== var actualCode = '(' + function() { var keywords = [ "РЕПОСТ", "делать репост", "дeлaйтe рeпoст", "делай репост", "репост этой записи", "REPOST", "ступите в группу", "ступите в нашу группу", "ступаем в группу", "Регистрация всего за", "Запишитесь на бесплатный", "бесплатно дадим", "БЕСПЛАТН", "Получить бесплатн", "ПОДАРОК", "СКИДКА", "ВЫИГРАЙ", "получи шанс выиграть", "КОНКУРС", "Мега-Акция", "АКЦИЯ", "Подпишись", "подпишитесь на", "Подписывайся на", "Быть подписчиком", "Быть подписанным на", "Подписывайтесь - ", "Подписаться на группу", "ЗАКАЖИТЕ", "КУПИТЬ", "Заказать можно тут", "Подарок можно забрать", "Вы сможете забрать ваш подарок", "бизнес-план", "бизнес-проект", "Читать продолжение в источнике", "Смотреть ответ в источнике", "олько для участников сообщества", "Читай продолжение здесь", "/domavern", "/businessstrategy", "/virashopru", "/tri10oe", "/kinona5", "/watson_club", "Центр образовательных технологий Advance", "Начни играть тут", "NovaPizza.ru", "skypeteach.ru", "advance-club.ru", "sdelano.ru", "edgarkulikov.ru", "citystarwear.com", "befree-school.ru", "bright-shopping.ru", "1media-buyer.ru", "itunes.apple.com%2Fapp%2Fapple-store%2Fid695634432", "sale-stop.ru", "offersboard.ru", "elementaree.ru", "start-mobile.net", ".hitnsale.ru" ]; var n; // length of selected tags list var d; // DOM item var i, j; // just iterators function cleanAd() { var divs = document.querySelectorAll("div._post, div.feed_row, div.wall_item"); n = divs.length; for(i = 0; i0) { for(j=0; j=keywords.length) { d.setAttribute('no_ad', 'true'); } } } } } cleanAd(); // see http://stackoverflow.com/a/14570614 var observeDOM = (function(){ var MutationObserver = window.MutationObserver || window.WebKitMutationObserver, eventListenerSupported = window.addEventListener; return function(obj, callback){ if( MutationObserver ){ // define a new observer var obs = new MutationObserver(function(mutations, observer){ if(mutations[0].addedNodes.length || mutations[0].removedNodes.length) callback(); }); // have the observer observe foo for changes in children obs.observe(obj, { childList:true, subtree:true }); } else if( eventListenerSupported ){ obj.addEventListener('DOMNodeInserted', callback, false); obj.addEventListener('DOMNodeRemoved', callback, false); } }; })(); var containers = document.querySelectorAll('body'); n = containers.length; for(i = 0; i