document.body.removeChild() глючит в Опере
Вот такая фигня получается.
Создаю див с картинкой через document.body.appendChild(), пока работает Аякс, она показывается (типа loading...). В конце - удаляется, через document.body.removeChild(). Так вот она в объекте body реально исчезает, а в окне - висит. Ее можно любым другим окном, даже не полноэкранным, подтереть как резинкой в Paint'е. Но сайт серьезный, такое оставлять нежелательно. Подскажите, может кто с подобным сталкивался? Глюк только в Опере. ИЕ, Сафари, Лис - работают четко. Весь код не хочу выкладывать - он довольно громоздкий там много всего... |
Попробуйте перед удалением ставить картинке style.display = "none".
|
Скажи спасибо добрым разработчикам Оперы за супер систему перерисовки рабочей области...
|
Цитата:
Простите, просто забыл об этом сразу сказть: style.display в самом деле работает, но только ЕСЛИ УБРАТЬ злосчастный document.body.removeChild(). А этого не хотелось бы: кликов, вызвающих Аякс, может быть много, будут плодиться дивы... |
Цитата:
ну специально для Оперы? (почти шутка... а как хотелось бы!) |
kvl,
А что происходит, если сначала скрыть (display = "none"), а потом удалить? Не удаляется, или не скрывается? Если не успевает скрыться, можно удалять с небольшим таймаутом, чтоб она успела исчезнуть с документа. Конечно, это решение больше похоже на хоровод с бубном, но тем не менее. |
Цитата:
Цитата:
|
Цитата:
Правда, setTimeout не подошел: он выполняется асинхронно, а мне нельзя двигаться по скрипту дальше, пока removeChild не отработал. Поставил просто пустой цикл типа for (i=0;i<1000000;i++){}; В общем, спасибо за идею! Я как-то не додумался до задержки... |
Цитата:
|
Не боись!
Написал же: "типа", просто длинно писать было лениво. На самом деле там будет отсчет по времени: var t1 = new Date(); var t2 = new Date(); while (t2 - t1 < 100){t2 = new Date}; |
Так короче :)
var t=new Date();while((new Date())-t<100); |
Другой бы спорил... :rolleyes:
Просто меня долбают как раз за то что пишу коротко, и другим непнятна... Привычка! |
Ну если понятность нужна
for (var t1 = new Date(), t2 = t1; t2 - t1 < 100; t2 = new Date()); |
Методом научного тыка нашел простое решение: нужно было всего-то поменять стиль: вместо style.position = 'fixed' поставить style.position = 'absolute', как для IE.
Кто б мог подумать... Спасибо всем за участие, все что было сказано, где-нибудь еще пригодится! |
методом научного тыка я понял, что с оперой бывает труднее/невозможнее бороться, чем с ИЕ, так как ИЕ можно заставить работать как надо путём хаков и извращений, а оперу бывает никаким способом не заставишь...
|
ИЕ при всей своей глюковатости более логичный и предсказуемый, в отличие от оперы. Опера нахватала от каждого по фишке и теперь сама не знает, что с этим делать. При просмотре файла browser.js волосы дыбом встают.
![]() |
Часовой пояс GMT +3, время: 23:52. |