PDA

Просмотр полной версии : Непонятное поведение flash в IE после перезагрузки


micolo
01.12.2007, 21:43
Доброго времени суток!

У меня такой вопрос! Вставляю на html страницу flash, традиционным способом или через swfobject. Первый раз станица грузится нормально, все последующие разы, после перезагрузки часть графических элементов всего дизайна сайта, не догружается причем каждый раз в разных местах. Такая ситуация только в IE, в mozilla всё нормально. С чем это связано?

Что, неужели только у меня такая проблема?

screamge
03.12.2007, 07:45
Предлагаете гадать почему так у вас происходит?

Idalgo
29.12.2007, 02:43
Аналогичная ситуация.
Только когда флешка грузится через swfobject.
Походу размеры Stage после обновления страницы почему-то равны 0 и вообще все работает непонятно.

http://www.rivne-today.com/test/test_stage1.html

- посмотрите, что происходит после F5 в Интернет эксплорере.
В других браузерах и без использования swfobject такого нет.
Почему??? Очень нужна помощь.

iNils
29.12.2007, 11:11
fla покажите

Idalgo
29.12.2007, 21:31
не вопрос
http://www.rivne-today.com/test/test_stage.fla

В принципе решение я нашел:
http://blog.deconcept.com/swfobject/forum/discussion/582/refresh-issue-in-ie-please-help/
Но оно меня не устраивает по одной простой причине - необходимости каждый раз заново скачивать swf-файл, который таки что-то весит.

aQuestion
30.12.2007, 13:03
Походу размеры Stage после обновления страницы почему-то равны 0Это известные грабли, происходит в ИЕ при закашеной СВКе. Бороться с этим должны в Адобе, а нам с вами остается лишь писать по другому.

iNils
30.12.2007, 13:41
var Stage_width;
var Stage_height;
Stage.align = "TL";
Stage.scaleMode = "noScale";
function onResize () {
Stage_width = Stage.width;
Stage_height = Stage.height;
}
Stage.addListener (this);
//// строчку ниже не удалять
onResize ();

onEnterFrame = function () {
s1.show ();
delete onEnterFrame;
};
stop ();

Idalgo
31.12.2007, 13:01
При всем уважении, это не работает, как надо.
Да, переменным присваиваются правильные значения. И только.
По Ф5 в ИЕ круг не центрируется. Алерт например при рефреше тоже выводится в 0:0 всесто середины Stage.

См. http://www.rivne-today.com/test/test_stage1.html
Я вывел тестовые сообщения. В других браузерах все правильно, а в ИЕ - ерунда какая-то.

исходник:
http://www.rivne-today.com/test/test_stage.fla

...кстати

Всех присутствующих с Новым годом!!!

iNils
31.12.2007, 14:22
Вы кеш IE терли после обновления swf?
У меня круг центруется.

Idalgo
02.01.2008, 12:23
с потертым кешем центрируется
иначе - нет.

iNils
02.01.2008, 13:21
Результат загрузки в IE6.
18589
1. Загружен файл http://www.rivne-today.com/test/test_stage.swf
2. Браузер взял файл из кеша
3. Размеры рабочего поля определились
4. Круг встал по центру

CrazyFlasher
02.01.2008, 13:25
я из такой ситуации выходил используюя небольшой таймаут

Idalgo
03.01.2008, 19:48
2 iNils
swf файл нипричем - сам по себе он выполняется корректно
глючит связка IE+swfobject
см. http://www.rivne-today.com/test/test_stage1.html

iNils
03.01.2008, 21:10
А где я сказал, что swf глючит?
У меня на скриншоте видно:
- загрузка html
- загрузка swfobject
- загрузка swf
- отображение swf
То есть связка IE+swfobject и с корректным отображением swf.
Можете вместо swfobject попробывать использовать мой iobject (http://www.flasher.ru/forum/showthread.php?t=79184) (только он не детектит версию плеера).

aQuestion
03.01.2008, 21:26
swf файл нипричем - сам по себе он выполняется корректно
глючит связка IE+swfobjectчто значит "сам по себе"? в хтмл без свфобъекта, или напрямую свф в адресной строке?

эдит: вопрос снят. сам проверил.

2инильс: баг (http://www.flashgamer.com/2007/02/dont_trust_stagewidth.html) видится в ИЕ7

etc
03.01.2008, 22:07
Пару раз сталкивался с этим багом, но в конечном итоге он так и не проявил себя, уж не знаю, почему.

aQuestion
03.01.2008, 22:15
В принципе решение я нашел:
http://blog.deconcept.com/swfobject/forum/discussion/582/refresh-issue-in-ie-please-help/
Но оно меня не устраивает по одной простой причине - необходимости каждый раз заново скачивать swf-файл, который таки что-то весит.вы плохо прочитали топик. в самом низу умный человек сообщил, что проблема упирается в innerHTML и использование document.write её решает. я только что проверил со скриптом инильса (как раз document.write) - таки работает. это не кошерно (http://www.w3.org/MarkUp/2004/xhtml-faq#docwrite), но видимо выход.

Edit: немного повозился со скриптом нильса, вобщем результат такой:
function showFlash(o, cid){
...
var element = document.createElement("embed");
element.setAttribute ("type", "application/x-shockwave-flash");
element.setAttribute ("pluginspage", "http://www.macromedia.com/go/getflashplayer");
element.setAttribute ("src", o.name);
element.setAttribute ("width", o.width);
element.setAttribute ("height", o.height);

document.getElementById(cid).appendChild(element);
//debugger;

}увы, элемент "эмбед" не есть часть хнтмл, посему такой хак тоже не кошерен. к сожалению, не могу понять, почему не добавляется "обжект".

Edit 2: object tag added successfully withvar element = document.createElement("object");
element.setAttribute ("classid", "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000");
element.setAttribute ("codebase", "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version='+v+'");
element.setAttribute ("width", o.width);
element.setAttribute ("height", o.height);
document.getElementById(cid).appendChild(element);
element.movie = o.name;однако єтот код подвержен проблеме с кэшем :(