Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Q: как распространить действие событий ... ... JavaScript на "дочерний" фрейм? 
:(
    Опции темы
Иван FXS
Дата 1.4.2004, 19:05 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Здравствуйте!
У меня есть окно с двумя фреймами, в одном из них - "дочернем" - я хочу открывать ДЛЯ ПРОСМОТРА некоторый ВНЕШНИЙ html-документ ...
Где мне следует поместить код функции обработки события, например:
function myOnMouseMove(){
clientX = window.event.clientX
clientY = window.event.clientY
s="(" + clientX + "," + clientY + " ) "
window.status = s
}
и операцию активирования этого обработчика, например:
onmousemove="myOnMouseMove()"

- чтобы это событие возникало (и обрабатывалось) также и на/в "дочернем" фрейме?

НП, Иван FXS.
  Вверх
Royan
Дата 3.4.2004, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: 1
Всего: 15



Все просто раз есть фрймы значит есть и такое понятие как обект фрейма. Пусть в моем случае твой код располагается в фрейме, что находится слева, а присобачить обработку движения мыши нужно еще и к тому что с лева. Соответственно есть один корневой фрейм, который описывает frameset. Из любого фрейма достать соседний можно так: top.left[somthing] или top.right[something] (опять же предполагается что left и right это имено левого и правого фреймов соответственно). Это означает что нам осталось распространить влияние твоей функции на правый фрейм. Делаем следующее:
Код
<script LANGUAGE="JScript">
attachEvent ('onmousemove', top.right.myOnMouseMove);
</sctipt>

и всего делов. Можно написать что -то вроде деструктора скрещенного со сборщиком мусора, чтобы "почистить" за собой и освободить память, тогда приведенный выше код измениться следующим образом::
Код
<PUBLIC:ATTACH EVENT="ondetach" ONEVENT="cleanup()" />

<script LANGUAGE="JScript">
attachEvent ('onmousemove', top.right.myOnMouseMove);
function cleanup()
{
  detachEvent ('onmousemove', top.right.myOnMouseMove);
}
</sctipt>

Подразумевается, что мы все любим и пользуемся Internet Explorer 5 и выше ;)


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
Sardar
Дата 4.4.2004, 02:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Ну не так трагично это все.... smile.gif
Если честно, то я не понял в чем проблема. Если ты можешь редактировать загружаемую страницу, то допиши туда код который будет вызывать функции из другого фрейма.
Иначе перепиши обработчиков событий конкретного фрейма:
Код

//right.htm
<script language="Javascript" type="text/javascript">
<!--
function movemy(x,y) {
document.getElementById('test').innerHTML="X: "+x+"Y: "+y;
}
function movebrother(x,y) {
document.getElementById('test').innerText="br: X: "+x+"Y: "+y;
}
if(typeof(document.captureEvents)!='undefined') {
document.captureEvents(Event.MOUSEMOVE);
}
document.onmousemove=function(evn){
evn=evn==null? window.event: evn;
movemy(evn.screenX,evn.screenY);
};

if(typeof(parent.frames['right'])!='undefined') {
if(typeof(document.captureEvents)!='undefined') {
 parent.frames['right'].document.captureEvents(Event.MOUSEMOVE);
 }
parent.frames['right'].document.onmousemove=function(evn) {
 evn=(evn==null)? parent.frames['right'].event: evn;
 movebrother(evn.screenX,evn.screenY);
};
}
//-->
</script>
....
<div id="test">Test</div>

//index.htm
<frameset cols="50%,50%" border="5">
<frame name="left" src="right.htm"></frame>
<frame name="right" src="loadable_page.htm"></frame>
</frameset>

По идее код должен работать и в Мозилле(Netscape...), но наверное из-за того что у меня 1.7 Alfa или в целях безопасности Мозилла не позволяет изменять обрабтчиков событий чужого фрейма.
Для Мозиллы есть аналог IE attachEvent: addEventListener(type,handler), но я это пока не использовал.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Royan
Дата 5.4.2004, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: 1
Всего: 15



Слудующая фраза, конечно на любителя, но если быть откровенным, то делать сайт совместимым еще и с Mozill'ой, изврат достойный только JS-guru и студентов у коих сопли всегда пузырями (пардон за прямоту) для всех остальных код для IE достаточно до зарезу.


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
Sardar
Дата 5.4.2004, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Интересная точка зрения... smile.gif, хотя ты не первый от кого я подобное слышу...
Мозилла крутой браузер, если бы еще интерфейс был бы поудобней, то вообще никаких претензий. Писать совместимый код между Gecko браузерами, Opera и IE довольно легко. Нетскапу кривую основанную не на Gecko(версии 4) нужно специально забыть, уж больно тупо все там сделанно, да и в 21'вом веке живем.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Royan
Дата 6.4.2004, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: 1
Всего: 15



Sardar только без обид, smile.gif я довльно много и долго программировал на JS, и перепробовал кучу всего, и смею заметить фраза
Цитата
Писать совместимый код между Gecko браузерами, Opera и IE довольно легко.
далеко не всегда имеет место быть. Одно дело если ты пишешь по стандарту (ECMA-262) а другое ты делаешь fully functional user interface (используя DOM 1 или\и 2). Последнее чаще всего упиарется в весьма неожиданные моменты, хотя я не спорю все больше и больше вещей фиксаются. На мой взгляд самыми вопиющими были факты неверной интерпретацией XSL (правда даненько это было года 1,5 назад).



--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0440 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.