Страницы: 1
нужно получить список подгружаемых на странице скриптов
до конца загрузки страницы (до начала работы скриптов)
и удалить некоторые из них
Как это правильно сделать?
мои мысли:
Внедряю в страницу свой скрипт, в который передаю список скриптов, которые нужно удалить
main.js
tabs.on('ready', function(tab) { var includeUrl = tab.url; if (includeUrl.indexOf('/') > 0) { worker = tab.attach({ contentScriptFile: self.data.url("remove_scripts.js") }); worker.port.emit('SubstitutionList', SubstitutionList, SubstitutionListSize); } });
remove_scripts.js
self.port.once('SubstitutionList', function(SubstitutionList, SubstitutionListSize){ переменная page, в которую записывается конечный код страницы цикл с предусловием пока поиск в странице '<script' не даст -1 а=поиск в странице '<script' б=поиск начиная с места нахождения 'src=' в=поиск до '></script>' д=промежуток (от б до в) сравнивается с передаваемым списком если нет совпадений - копируем все в page, если есть совпадение, копируем вырезая скрипт конец цикла присваиваю коду страницы значение = page });
Правильно ли?
Как работает Adblock и ему подобные плагины, удаляющие рекламу?
Отредактировано fireday2 (02-11-2014 19:38:33)
Отсутствует
Очень хорошее и правильное дело задумал, только вот помочь не могу ибо не силен. Может тока подсказать, и то на примере другого бравзера.
адблок-и просто скрывают блоки с помощью CSS , inline-scripts они не трогают и всячески противятся(разрабы) этому, хотя их просят за то.
Есть кусок кода для Опера который делает именно это, вырезает инлайн скрипт определенный. недавно поковырялся, но не смог понять как сделать это в FF. В Опера работающий код блокирующий исполнение скрипта такой:
// ==UserScript== (function () { if (false || (new RegExp("^https?:\\/\\/[www.]*donbassforum.net\\/[^i]?.*$")).test(document.location.href)) window.opera.addEventListener('BeforeScript', function(e) { if(e.element.text.indexOf('window.document.getElementById("caa0")')!=-1) e.preventDefault(); }, false); })();
Отсутствует
Страницы: 1