Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблемы с методом observe в prototype.js  (Прочитано 9056 раз)
0 Пользователей и 1 Гость смотрят эту тему.
skynet80
Гость
« : 20-07-2006 11:09 » 

Ситуация такая хочу сделать edit-in-place в подгружаемой динамическе таблице, которая формируется на сервере ПХП.
В обычном варианте edit-in-place инициализируется (определяет места какие можно редактировать) при загрузке окна (window).
Код:
Event.observe(window, 'load', init, false);
Сам код инициализации выглядит следующим образом
Код:
// Initialize all div object that got the className of makeEditable
function init(){
var doc = document.getElementsByTagName('div');
for (var i = 0; i < doc.length; i++){
   if(doc[i].className == "makeEditable" )
   {
makeEditable(doc[i]);
}
}

}

function makeEditable(id){
Event.observe(id, 'click', function(){edit($(id))}, false);
Event.observe(id, 'mouseover', function(){showAsEditable($(id))}, false);
Event.observe(id, 'mouseout', function(){showAsEditable($(id), true)}, false);
}
Однако при подгрузке таблицы динамически такой вариант не подходит т.к. при загрузке окна редактируемых дивов еще нет в документе.
А после подгрузки я не знаю к какому событию привязаться чтобы инициализировать  Здесь была моя ладья...
« Последнее редактирование: 15-12-2007 15:16 от Алексей1153++ » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 20-07-2006 16:25 » 

А создать div-контейнер не пробовал?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
skynet80
Гость
« Ответ #2 : 20-07-2006 16:31 » 

Упс. Дело в том что контейнер был с самого начала. Мне просто событие нужно было к которому привязаться чтобы сделать дивы т.н. редактируемыми (поменять класс и добавить каждому свой прослушивальщик событий).
Как оказалось решение лежало на верху. Нужно было просто после вызова функции загрузки таблицы вызывать эту инициализацию правда с опозданием (чтобы таблица успела подгрузится), поставил 3 секунды вроде нормально.
Хотя может быть есть более хорошее решение не зависимое от скорости подгрузки хмл с сервера.
Записан
skynet80
Гость
« Ответ #3 : 02-08-2006 05:35 » 

Но т.к. задержка было не совсем хорошим решением. Т.к. никак не коррелировало с временем ответа сервера. Было найдено новое решение. В конце подгружаемого хтмл был вставлен див с ид=ендХМЛ.
А на клиенте по нажатии кнопки начинает выполняться функция которая проверяет есть ли этот элемент в документе. Если есть значит все подгрузилось и можно останавливаться и вызывать следующие функции. Если нет, то нужно повторить через некоторе время.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 02-08-2006 16:06 » 

skynet80, попробуй так: загружать в iframe страницу, в конце которой будет скрипт, вызывающий заранее определенную ф-ию родительского окна - это будет сигналом окончания загрузки, а так же можно передать объект нужного html-блока. Так же можно добавить таймаут - чтобы не ждать вечно.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines