Javascript.RU

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

document.body.removeChild() глючит в Опере
Вот такая фигня получается.

Создаю див с картинкой через document.body.appendChild(), пока работает Аякс, она показывается (типа loading...). В конце - удаляется, через document.body.removeChild().

Так вот она в объекте body реально исчезает, а в окне - висит. Ее можно любым другим окном, даже не полноэкранным, подтереть как резинкой в Paint'е. Но сайт серьезный, такое оставлять нежелательно.

Подскажите, может кто с подобным сталкивался?

Глюк только в Опере. ИЕ, Сафари, Лис - работают четко.

Весь код не хочу выкладывать - он довольно громоздкий там много всего...
Ответить с цитированием
  #2 (permalink)  
Старый 16.12.2008, 16:52
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Попробуйте перед удалением ставить картинке style.display = "none".
Ответить с цитированием
  #3 (permalink)  
Старый 16.12.2008, 16:52
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

Скажи спасибо добрым разработчикам Оперы за супер систему перерисовки рабочей области...
Ответить с цитированием
  #4 (permalink)  
Старый 16.12.2008, 16:57
kvl kvl вне форума
Интересующийся
Отправить личное сообщение для kvl Посмотреть профиль Найти все сообщения от kvl
 
Регистрация: 16.12.2008
Сообщений: 16

Сообщение от Андрей Параничев Посмотреть сообщение
Попробуйте перед удалением ставить картинке style.display = "none".
Отлично, просто телепатия! Это первое, что приходит в такой ситуации в наши отчаявшиеся головы.
Простите, просто забыл об этом сразу сказть: style.display в самом деле работает, но только ЕСЛИ УБРАТЬ злосчастный document.body.removeChild(). А этого не хотелось бы: кликов, вызвающих Аякс, может быть много, будут плодиться дивы...
Ответить с цитированием
  #5 (permalink)  
Старый 16.12.2008, 16:59
kvl kvl вне форума
Интересующийся
Отправить личное сообщение для kvl Посмотреть профиль Найти все сообщения от kvl
 
Регистрация: 16.12.2008
Сообщений: 16

Сообщение от ZoNT Посмотреть сообщение
Скажи спасибо добрым разработчикам Оперы за супер систему перерисовки рабочей области...
а может есть что-нибудь вроде window.refresh()?
ну специально для Оперы?
(почти шутка... а как хотелось бы!)
Ответить с цитированием
  #6 (permalink)  
Старый 16.12.2008, 17:05
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

kvl,
А что происходит, если сначала скрыть (display = "none"), а потом удалить? Не удаляется, или не скрывается?
Если не успевает скрыться, можно удалять с небольшим таймаутом, чтоб она успела исчезнуть с документа.

Конечно, это решение больше похоже на хоровод с бубном, но тем не менее.
Ответить с цитированием
  #7 (permalink)  
Старый 16.12.2008, 17:23
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от ZoNT
Скажи спасибо добрым разработчикам Оперы за супер систему перерисовки рабочей области...
Это самое безобидное, за что можно сказать разработчикам Оперы спасибо

Сообщение от Андрей Параничев
Конечно, это решение больше похоже на хоровод с бубном, но тем не менее.
Да не, таймауты это нормально.
Ответить с цитированием
  #8 (permalink)  
Старый 16.12.2008, 17:38
kvl kvl вне форума
Интересующийся
Отправить личное сообщение для kvl Посмотреть профиль Найти все сообщения от kvl
 
Регистрация: 16.12.2008
Сообщений: 16

Сообщение от Андрей Параничев Посмотреть сообщение
kvl,
А что происходит, если сначала скрыть (display = "none"), а потом удалить? Не удаляется, или не скрывается?
Если не успевает скрыться, можно удалять с небольшим таймаутом, чтоб она успела исчезнуть с документа.

Конечно, это решение больше похоже на хоровод с бубном, но тем не менее.
Ура! Заработало!
Правда, setTimeout не подошел: он выполняется асинхронно, а мне нельзя двигаться по скрипту дальше, пока removeChild не отработал.
Поставил просто пустой цикл типа for (i=0;i<1000000;i++){};
В общем, спасибо за идею!
Я как-то не додумался до задержки...
Ответить с цитированием
  #9 (permalink)  
Старый 16.12.2008, 18:01
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

Сообщение от kvl
Поставил просто пустой цикл типа for (i=0;i<1000000;i++){};
теперь мой 233-й будет тормозить на таких вот сайтах...
Ответить с цитированием
  #10 (permalink)  
Старый 16.12.2008, 18:27
kvl kvl вне форума
Интересующийся
Отправить личное сообщение для kvl Посмотреть профиль Найти все сообщения от kvl
 
Регистрация: 16.12.2008
Сообщений: 16

Не боись!
Написал же: "типа", просто длинно писать было лениво.
На самом деле там будет отсчет по времени:
var t1 = new Date();
var t2 = new Date();
while (t2 - t1 < 100){t2 = new Date};
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает скрипт в Опере stosen Элементы интерфейса 34 03.11.2008 20:38
Проблема меню в Опере ChEh Общие вопросы Javascript 7 24.10.2008 15:24
Высота документа в опере. SunnyDay Общие вопросы Javascript 1 16.10.2008 13:27
"Причесал" скриптик, а он в Опере не пошел Mitrandir Events/DOM/Window 18 05.10.2008 12:43
DreamWeaver глючит. SunYang Общие вопросы Javascript 11 04.06.2008 12:18