|
User JS! (нужна консультация)
Уважаемые форумчане, помогите пожалуйста разобраться со следующими вопросами:
1. Как при помощи пользовательского JS ПРЕДОТВРАТИТЬ исполнение вражеской функции с чужой странички, если я знаю ее имя (showBanner), но не знаю положения в DOM (странички генерятся динамически, и функция showBanner располагается по разному)? 2. Как в теле хтмл-документа находить и заменять конкретный текст на другой конкретный текст? Например, мне надо везде в документе слово "пищевод" заменить на слово "кирпичи", чтобы весь остальной текст остался нетронутым? Пусть даже этот текст содержится в объявлении тега. То есть чтобы хтмл-текст "что угодно пищевод <a href="www.ru" пищевод>ссылка</a>" был заменен на "что угодно кирпичи <a href="www.ru" кирпичи>ссылка</a>". Как это сделать? Сразу скажу, что JS я знаю достаточно поверхностно. Вообще меня больше волнует первый вопрос. Как несложно догадаться, хочу убить злую рекламу. Для этого я использовал следующий скрипт: if(location.hostname.indexOf('porno-xxx.ru') != -1) { document.addEventListener ( 'load', function () { var bnr = document.getElementById("banner001"); var prnt = bnr.parentNode; prnt.removeChild(bnr); bnr = document.getElementById("banner002"); prnt = bnr.parentNode; prnt.removeChild(bnr); }, false ); } Скрипт работает нормально, но есть проблема. Я удаляю два тега DIV с идентификаторами banner001 и banner002, куда вражеская функция (showBanner) подгружает баннер. Скрипт срабатывает по факту загрузки страницы, и поэтому с момента окончания загрузки баннера до момента окончания загрузки страницы (несколько секунд) баннер красуется на страничке, повергая меня в ярость:-E . Как убить функцию showBanner?!?!?! На всякий случай опишу врага. Объявляется функция следующим образом: var showBanner = function(id, params){ код функции }При этом лежит она прямо на самой страничке в одном из тегов <script> </script>. Тег нельзя отследить с помощью конструкций типа document.getElementsByTagName("script")[k] и т.п., так как на разных страничках подопытного сайта он лежит то последним, то где-то посередине... Как повезет, короче. |
|
Цитата:
|
Спасибо. Но это не работает:
if(location.hostname.indexOf('porno-xxx.ru') != -1) { window.opera.defineMagicFunction ( 'showBanner', function (oRealFunc, oThis, oParam1, oParam2) { alert('VICTORY!'); } ); } Даже сообщение не выскакивает. В чем дело?:help: |
Kolyaj,
разве это не должно работать только в опере? |
Gvozd,
Цитата:
the_name, а сам скрипт-то хоть запускается? |
Цитата:
document.body.innerHTML=document.body.innerHTML.replace(/пищевод/g, 'кирпичи');Или для русских слов нужно как-то по другому? |
Цитата:
|
Цитата:
только что проверил на этой странице же. я бы на вашем месте читал ссулки даваемые вам, полностью. там на второй странице есть скрипт, не передергивающий страницу. также вот, еще одна тема про замену эти скрипты будут получше, чем простая замена, тем что не перерисовывают страницу. но есть пара мелких багов(они все описаны), исправление которых предоставляется вам |
Цитата:
|
Часовой пояс GMT +3, время: 19:55. |
|