Не пустить юзерСкрипт во фрайм (Opera Extension).
Здравствуйте.
Вопрос о расширениях в опера(opera Extension): Некоторые расширения работают с загружаемой страницей. Иногда, скрипты расширений, призванные делать что=то на странице ,со страницей, грузятся прямо во фрэймы, расположенный на странице( например во frame ad.adriver.ru на хабрахабре),а не поверх фрэйма. Загружаясь во фрэйм - расширение не работает со страницей, а тихо курит во фрэйме, невыполняя своих задач на загруженной странице. Пробовал убить все фрэймы на странице = все получилось, расширение грузится как надо, все работает. Как сделать без убирания фрэймов? Если вопрос поднимался - дайте ссыль. Искал по форуму - пока ничего не нашел. |
window == window.top будет true, если это верхнее окно, и false, если фрейм |
Цитата:
|
расширение запускается при помощи opera.extension.onmessage = function(e){ myFunc() };
Как вычислить не фрэйм внутри onmessage? делаю так: var G = window === window.top; opera.extension.onmessage = function(e){ if(G){ alert('грузим скрипт') } else if(!G){ alert('стоп') } } function myFunk(){ //babax } что не так делаю? Без кнопки запуска( opera.extension.onmessage ), все грузится как положено, браузер сам отсортировывает фрэймы, загружая скрипт в основное окно, минуя фрэймы и прочие неприятности. PS:: расширение rewriteIt с (офф. сайта Опера) имеет похожий косяк с фрэймами. |
Цитата:
Полагаю, что ее уже кто-то использует б) гворит е об одном коде, а скидываете другой сперва вы говорите об opera.extension.onmessage = function(e){ myFunc() };, а затем вы показываете как вы объявляете и не вызываете myFunk() Вы уж сначала разберитесь со своим кодом, что вы в нем делаете, и где вы в нем опечатываетесь |
opera.extension.onmessage = function(e){ var w = window == window.top; // return false; if(w){ alert('мимо') } else if(!w){ myFunk(); } } function myFunk(){ } Наверно это косяк оперы.Если не понятно в чем суть вопроса, скачайте расширение rewriteIt (rewriteit), зайдите на хабру и попытайтесь его запустить. Расширение залезет во фрайм. Пытаюсь обойти это. |
Цитата:
Цитата:
таким образом, ваша функция myFunk() должна выполниться в каждом фрейме |
opera.extension.onmessage = function(event) { var myVar = window == window.top; //return FALSE, а не true alert(myVar); } Гвоздь, если интересно разобраться: скачайте маленькое расширение, выше дал ссылку(11 кб). Чтобы увидеть работу rewriteIt во фрэме , измените в расширении: include -> base.js -> maindiv.style.left = '300px'; заменить на 30px(это чтобы увидеть работу скрипта в узком фрайме) Зайдите на хабрахабр, и запустите расширение. Должно появиться синий блок во фрайме справа. Мой код, написанный в теме - это лишь попытки изменить проблему, а не готовые решения. |
Цитата:
|
Часовой пояс GMT +3, время: 08:58. |