Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   рендеринг HTML и FLASH в IE (http://www.flasher.ru/forum/showthread.php?t=82267)

всеникизаняты 09.07.2006 00:01

рендеринг HTML и FLASH в IE
 
Какая-то засада... Стоит мне подключить ХОТЬ ОДНУ флешку, что я сделал, к странице на сайте, как в IE страница перестает полностью подгружаться. То есть, не грузит вообще половину картинок, будто и нет на них ссылок в HTML. При том что в Опере и ФФ все прекрасно отображается.
Сейчас еще помониторю заголовки, но как-то это печально совсем.

iNils 09.07.2006 00:06

Я думаю надо сначала полностью разобраться, что именно не работает, а потом уже писать сюда.

всеникизаняты 09.07.2006 00:30

Значит так, выцепил я баннер, из-за которого проблема.
Опера, файрфокс - страница грузится нормально. IE6 - если есть этот баннер, то после его загрузки рендеринг страницы IE просто прекращает моментально и все, что не успело отобразится - не показывается. Проверил также обмен HTTP заголовками - браузер запрашивает все картинки, как положено.
Что особенного в этом баннере? Он тащит XML и делает loadMovie с другого хоста. Сам баннер в IE и в других браузерах грузится нормально.

iNils 09.07.2006 00:54

Может все же исходник выложим?

всеникизаняты 09.07.2006 01:50

Смотри ПМ

Принципиальную разницу я нашел. IE грузит флеш В ПЕРВУЮ ОЧЕРЕДЬ (возможно это связано с порядком разбора структуры документа - флеш находится в начале страницы). Firefox грузит флеш-баннеры ВНЕ ЗАВИСИМОСТИ от их положения на странице последними. Возможно по этому он не успевает "сдохнуть".
Да, я тут все-таки ошибся, IE-таки не запрашивает все картинки, то есть даже не шлет все запросы на некоторые картинки на странице.

всеникизаняты 09.07.2006 02:04

Полевые испытания на моей локальной Фрибзде подтвердили мою правоту. Именно из-за того, что флеш грузится в ИЕ в порядке разбора анализатором HTML документа он и валит анализатора. Не даром, ой не даром в Опере и FF флэш разбирается в последнюю очередь. Именно так он не может испортить отображение документа, поскольку уже все отображено.

iNils 09.07.2006 02:08

Просмотр в IE ни каких проблем у меня не создал, поэтому сложно что либо сказать.

всеникизаняты 09.07.2006 02:14

Сравни то, что получилось с тем, что есть в Файрфоксе. Возможно он просто симметрично не отобразил картинки и тебе показалось, что проблем нет. Еще одна особенность: при быстрых соединениях, когда обмен HTTP заголовками идет достаточно быстро, анализатор браузера успевает обработать структуру документа полностью прежде, чем флеш-плагин его убьет своей ошибкой. У меня такое в локали наблюдается. Но все же, если очистить кэш и попробовать еще разок-другой - все-таки обнаруживается, что элементы документа загружены не полностью.

всеникизаняты 09.07.2006 02:16

Все, сейчас флеш переделаю, ошибка, очевидно, в нем.

всеникизаняты 09.07.2006 03:06

Парился я парился, а оказалось то... ну е-мое...
Во флеше на первом фрейме одна строка:
getURL("javascript:alert('you clicked me')");
И все. Если есть эта строчка, выскакивает джаваскрипт-окно и на странице не грузится ни одно изображение (только в IE 6).

всеникизаняты 09.07.2006 03:28

Это естессно для примера, а вообще любой getURL("javascript: - фатально для IE, он после этого джаваскрипта перестает грузить страницу. Это только у меня такие кривые руки?

всеникизаняты 09.07.2006 04:00

Вот еще одна наводка. Попробуйте сделать так:
1.Флеш с javascript:alert('flash'); на первом фрейме
2.HTML документ с body onLoad="alert('onLoad');"
Так вот у меня в FF сначала выскакивает сообщение от body.onLoad, а потом от flash, а в IE выскакивает ТОЛЬКО от flash, до body.onLoad дело вообще не доходит

iNils 09.07.2006 04:03

Цитата:

Сообщение от всеникизаняты
Это естессно для примера, а вообще любой getURL("javascript: - фатально для IE, он после этого джаваскрипта перестает грузить страницу. Это только у меня такие кривые руки?

Да нет, это известный момент. Еще и гиф анимация при этом должна останавливаться.

всеникизаняты 09.07.2006 04:08

http://board.flashkit.com/board/arch.../t-465855.html
Во блин, я не один такой несчастный. Так что же делать, неужели все-таки fscommand... Придетса видимо...

iNils 09.07.2006 04:22

У меня на буке нет других браузеров кроме Maxthon (IE). Поэтому предлагаю самому провести такой эксперимент. Сделать текстовую флешку с динамическим текстовым полем txt. И в первый кадр поставить такой код:
Код:

txt.text = "1";
getURL ("javascript:alert('flash');");
txt.text = "2";

А в HTML документе поставить, выше упомянутый
Код:

onLoad="alert('onLoad');"
В IE выскакивает окно с тектом onLoad, а поле принимает значение 2. Интересно как поведет себя фф. Тоже будет 2 или же 1?

всеникизаняты 09.07.2006 13:52

Вобщем, отказался я от getURL, но FSCommand - засада та еще. Даже официальный пример macromedia и тот в Опере не работает
http://www.adobe.com/support/flash/t...avascript.html
Ну что тут делать?

iNils 09.07.2006 14:11

Почитай http://noregret.org/tutor/navigation/ может найдешь что-нить полезное.
Кстати, а что собственно ты хочешь сделать?:)

всеникизаняты 09.07.2006 14:48

Итого, подводим итог (не везде ясно описанный и очевидный, возможно его стоит занести в FAQ - если честно, я туда сам не смотрел):

Можно-ли обратится к javascript из флеш-ролика?
Можно, есть три способа.
1.getURL()
(+) Работает во всех браузерах
(+) Поддерживается во флеш-плеерах начиная с версии 2
(+) Не требует никаких нагромождений в коде HTML
(-) Проигрывает звук КЛИКА, поскольку является аналогом клика по ссылке
(-) В IE после вызова метода прекращается загрузка HTML документа
Диагноз: пригоден только для обработки кликов кнопок во флеше. Непригоден для инициализации флеш-ролика (размеры и проч. действия, выполняющиеся автоматически при загрузке).

2.fscommand()
(+) Является внутренним вызовом функции javascript, по сему не кликает и не останавливает загрузку документа
(-) Не работает в Opera и старых версиях Netscape/Mozilla, а также же в большинстве не-Windows браузеров
(-) Требует достаточно громоздкого javascript-кода в тексте страницы.
Диагноз: не пригоден, если только вы не ориентируетесь только на посетителей с IE

3.flash.external.ExternalInterface
(+) Лишен всех недостатков двух первых вариантов + обладает их всеми достоинствами за исключением одного
(-) Работает ТОЛЬКО в восьмой версии флеш-плеера.
Диагноз: пригоден только для оптимистов и энтузиастов ;-)

Такая картина неприятная...

iNils 09.07.2006 15:01

Цитата:

(-) В IE после вызова метода прекращается загрузка HTML документа
Диагноз: пригоден только для обработки кликов кнопок во флеше. Непригоден для инициализации флеш-ролика (размеры и проч. действия, выполняющиеся автоматически при загрузке).
Это почему же?

всеникизаняты 09.07.2006 15:05

Потому что как только во флеше происходит вызов getURL("javascript:... загрузка HTML документа браузером (IE) прекращается. Конечно, может такое быть, что канал инета шустрый и страница успевает подгрузится быстрее, чем сработает код баннера, но на диалап модеме это точно не так. В результате получаем недогруженную страницу.

всеникизаняты 09.07.2006 15:07

Есть еще одно но: если весь сайт на флеше и кроме него грузить просто нечего, то тогда, конечно getURL решает.

iNils 09.07.2006 15:09

Мне не понятно, а зачем сразу вызывать getURL?

всеникизаняты 09.07.2006 17:09

Например, чтобы придать ролику определенный размер в окне браузера (если этот размер становится известен ТОЛЬКО на этапе инициализации). В моем случае флешка должна была принять размер подгружаемого изображения.

iNils 09.07.2006 17:27

А что мешает узнать размеры чуть раньше и сразу сформировать нужный размер флешки?

всеникизаняты 09.07.2006 22:32

можно конечно серверным скриптом узнать размеры картинки и подсунуть их в описание объекта ролика в HTML. Но, во-первых, это двойная работа (картинку грузит и сервер и клиент), а во-вторых, требует как минимум наличия соответствующего серверного ПО и соответствующих познаний, далеких от собственно флеша.
Или что подразумевается под "чуть раньше"?

iNils 09.07.2006 23:04

Цитата:

Сообщение от всеникизаняты
Или что подразумевается под "чуть раньше"?

Это значит при формировании страницы ява скрипту (или php) передать размер картинки которую будет грузить флеш.

Homo Sapiens 10.07.2006 22:39

Да, есть такая хрень у ишака, помню, такое возникает при попытки юзать JS до полной загрузки, в смысле события js...
Из эого вывод, что вероятно стоит вешать события тем же JS но по onload/


Часовой пояс GMT +4, время: 20:15.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.