Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.03.2011, 17:37
Новичок на форуме
Отправить личное сообщение для re3443 Посмотреть профиль Найти все сообщения от re3443
 
Регистрация: 10.03.2011
Сообщений: 4

Обработка событий от документа в Iframe(после смены у него src)
Имеется невидимый iframe, с помощью которого внутри дива выводится некоторый html-документ.
При смене свойства src ифрейма(или, как вариант, location.href):
document.getElementById(ifrId).src = '/doc.jsp?page=' + n;
или
window.frames.ifrId.location.href = '/doc.jsp?page=' + n;
выводится документ с новым набором данных.

То есть, такая псевдо-аяксовая листалка.

Документ, подгружаемый в ифрейм, содержит элементы, клики на которых должны обрабатываться скриптом. Сам скрипт находится на странице, содержащей ифрейм. Так вот: при первоначальной загрузке javascript-события от этих элементов обрабатываются скриптом, а после смены src ифрейма, страница перестаёт реагировать на клики. Там всё те же элементы, с теми же атрибутами, которые должны ловиться и обрабатываться скриптом(и обрабатываются при первоначальной загрузке).
Ответить с цитированием
  #2 (permalink)  
Старый 10.03.2011, 18:20
Новичок на форуме
Отправить личное сообщение для re3443 Посмотреть профиль Найти все сообщения от re3443
 
Регистрация: 10.03.2011
Сообщений: 4

Важный момент: в div документ из ифрейма вставляется через innerHTML:
if (window.frames.ifrId.document.body.innerHTML != '') {
		document.getElementById('div_id').innerHTML = window.frames.ifrId.document.body.innerHTML;
	}

Это происходит и при первой загрузке и после смены страницы. Поэтому скрипт работает со страницей не как с фреймом, а напрямую. До смены src ифрейма это удаётся, а после невозможно достучаться и как к документу в фрейме.
Например вот так:
window.onload = function() {
	var deleteAll = document.getElementById('ifrId').document.getElementById("delete_all");
	deleteAll.onclick = function() {
		alert('112');
	}	
}

При загрузке страницы обработчик click успешно навешивается на элемент, при клике по нему выводится алерт. Но после смены страницы обработчик перестаёт реагировать.

Последний раз редактировалось re3443, 10.03.2011 в 18:22.
Ответить с цитированием
  #3 (permalink)  
Старый 10.03.2011, 19:10
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

http://javascript.ru/tutorial/events...s#tip-sobytiya
вставь в контейнер и отлавливай события в нём
Ответить с цитированием
  #4 (permalink)  
Старый 11.03.2011, 11:12
Новичок на форуме
Отправить личное сообщение для re3443 Посмотреть профиль Найти все сообщения от re3443
 
Регистрация: 10.03.2011
Сообщений: 4

Спасибо, работает! Само явление мне до сих пор не совсем понятно. Почему обработчики событий установленные до смены src ифрейма ловили события, а после смены src уже нет? Не всё ли равно, откуда взялся кусок html-я, присвоенный innerHTML?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JQuery отложенная обработка событий hover DemonWather jQuery 2 09.03.2011 09:01