![]() |
рендеринг HTML и FLASH в IE
Какая-то засада... Стоит мне подключить ХОТЬ ОДНУ флешку, что я сделал, к странице на сайте, как в IE страница перестает полностью подгружаться. То есть, не грузит вообще половину картинок, будто и нет на них ссылок в HTML. При том что в Опере и ФФ все прекрасно отображается.
Сейчас еще помониторю заголовки, но как-то это печально совсем. |
Я думаю надо сначала полностью разобраться, что именно не работает, а потом уже писать сюда.
|
Значит так, выцепил я баннер, из-за которого проблема.
Опера, файрфокс - страница грузится нормально. IE6 - если есть этот баннер, то после его загрузки рендеринг страницы IE просто прекращает моментально и все, что не успело отобразится - не показывается. Проверил также обмен HTTP заголовками - браузер запрашивает все картинки, как положено. Что особенного в этом баннере? Он тащит XML и делает loadMovie с другого хоста. Сам баннер в IE и в других браузерах грузится нормально. |
Может все же исходник выложим?
|
Смотри ПМ
Принципиальную разницу я нашел. IE грузит флеш В ПЕРВУЮ ОЧЕРЕДЬ (возможно это связано с порядком разбора структуры документа - флеш находится в начале страницы). Firefox грузит флеш-баннеры ВНЕ ЗАВИСИМОСТИ от их положения на странице последними. Возможно по этому он не успевает "сдохнуть". Да, я тут все-таки ошибся, IE-таки не запрашивает все картинки, то есть даже не шлет все запросы на некоторые картинки на странице. |
Полевые испытания на моей локальной Фрибзде подтвердили мою правоту. Именно из-за того, что флеш грузится в ИЕ в порядке разбора анализатором HTML документа он и валит анализатора. Не даром, ой не даром в Опере и FF флэш разбирается в последнюю очередь. Именно так он не может испортить отображение документа, поскольку уже все отображено.
|
Просмотр в IE ни каких проблем у меня не создал, поэтому сложно что либо сказать.
|
Сравни то, что получилось с тем, что есть в Файрфоксе. Возможно он просто симметрично не отобразил картинки и тебе показалось, что проблем нет. Еще одна особенность: при быстрых соединениях, когда обмен HTTP заголовками идет достаточно быстро, анализатор браузера успевает обработать структуру документа полностью прежде, чем флеш-плагин его убьет своей ошибкой. У меня такое в локали наблюдается. Но все же, если очистить кэш и попробовать еще разок-другой - все-таки обнаруживается, что элементы документа загружены не полностью.
|
Все, сейчас флеш переделаю, ошибка, очевидно, в нем.
|
Парился я парился, а оказалось то... ну е-мое...
Во флеше на первом фрейме одна строка: getURL("javascript:alert('you clicked me')"); И все. Если есть эта строчка, выскакивает джаваскрипт-окно и на странице не грузится ни одно изображение (только в IE 6). |
Это естессно для примера, а вообще любой getURL("javascript: - фатально для IE, он после этого джаваскрипта перестает грузить страницу. Это только у меня такие кривые руки?
|
Вот еще одна наводка. Попробуйте сделать так:
1.Флеш с javascript:alert('flash'); на первом фрейме 2.HTML документ с body onLoad="alert('onLoad');" Так вот у меня в FF сначала выскакивает сообщение от body.onLoad, а потом от flash, а в IE выскакивает ТОЛЬКО от flash, до body.onLoad дело вообще не доходит |
Цитата:
|
http://board.flashkit.com/board/arch.../t-465855.html
Во блин, я не один такой несчастный. Так что же делать, неужели все-таки fscommand... Придетса видимо... |
У меня на буке нет других браузеров кроме Maxthon (IE). Поэтому предлагаю самому провести такой эксперимент. Сделать текстовую флешку с динамическим текстовым полем txt. И в первый кадр поставить такой код:
Код:
txt.text = "1";Код:
onLoad="alert('onLoad');" |
Вобщем, отказался я от getURL, но FSCommand - засада та еще. Даже официальный пример macromedia и тот в Опере не работает
http://www.adobe.com/support/flash/t...avascript.html Ну что тут делать? |
Почитай http://noregret.org/tutor/navigation/ может найдешь что-нить полезное.
Кстати, а что собственно ты хочешь сделать?:) |
Итого, подводим итог (не везде ясно описанный и очевидный, возможно его стоит занести в FAQ - если честно, я туда сам не смотрел):
Можно-ли обратится к javascript из флеш-ролика? Можно, есть три способа. 1.getURL() (+) Работает во всех браузерах (+) Поддерживается во флеш-плеерах начиная с версии 2 (+) Не требует никаких нагромождений в коде HTML (-) Проигрывает звук КЛИКА, поскольку является аналогом клика по ссылке (-) В IE после вызова метода прекращается загрузка HTML документа Диагноз: пригоден только для обработки кликов кнопок во флеше. Непригоден для инициализации флеш-ролика (размеры и проч. действия, выполняющиеся автоматически при загрузке). 2.fscommand() (+) Является внутренним вызовом функции javascript, по сему не кликает и не останавливает загрузку документа (-) Не работает в Opera и старых версиях Netscape/Mozilla, а также же в большинстве не-Windows браузеров (-) Требует достаточно громоздкого javascript-кода в тексте страницы. Диагноз: не пригоден, если только вы не ориентируетесь только на посетителей с IE 3.flash.external.ExternalInterface (+) Лишен всех недостатков двух первых вариантов + обладает их всеми достоинствами за исключением одного (-) Работает ТОЛЬКО в восьмой версии флеш-плеера. Диагноз: пригоден только для оптимистов и энтузиастов ;-) Такая картина неприятная... |
Цитата:
|
Потому что как только во флеше происходит вызов getURL("javascript:... загрузка HTML документа браузером (IE) прекращается. Конечно, может такое быть, что канал инета шустрый и страница успевает подгрузится быстрее, чем сработает код баннера, но на диалап модеме это точно не так. В результате получаем недогруженную страницу.
|
Есть еще одно но: если весь сайт на флеше и кроме него грузить просто нечего, то тогда, конечно getURL решает.
|
Мне не понятно, а зачем сразу вызывать getURL?
|
Например, чтобы придать ролику определенный размер в окне браузера (если этот размер становится известен ТОЛЬКО на этапе инициализации). В моем случае флешка должна была принять размер подгружаемого изображения.
|
А что мешает узнать размеры чуть раньше и сразу сформировать нужный размер флешки?
|
можно конечно серверным скриптом узнать размеры картинки и подсунуть их в описание объекта ролика в HTML. Но, во-первых, это двойная работа (картинку грузит и сервер и клиент), а во-вторых, требует как минимум наличия соответствующего серверного ПО и соответствующих познаний, далеких от собственно флеша.
Или что подразумевается под "чуть раньше"? |
Цитата:
|
Да, есть такая хрень у ишака, помню, такое возникает при попытки юзать JS до полной загрузки, в смысле события js...
Из эого вывод, что вероятно стоит вешать события тем же JS но по onload/ |
| Часовой пояс GMT +4, время: 20:15. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.