Так есть или нет innerHTML в теге <OBJECT> и DOM-объекте типа OBJECT?
Я уже запутался с этими броузерами и документами, описывающими возможности innerHTML. Прошу вашего внимания.
Провожу простой тест: var a=document.createElement('DIV'); var b=document.createElement('OBJECT'); a.innerHTML='blablabla'; b.innerHTML='blablabla'; Что имеем? Ну с DIV_ом всё понятно, всё хорошо. А вот с объектом типа 'OBJECT' в разных броузерах: Google Hrome (11.0) - Отлично! всё работает! FireFox (4.0.1) - работает. но есть нюансы. Opera (11.11) - BAD. IE (8.0) - BAD. вызывает ошибку! Есть надежда, что в следующих версиях броузеров это будет работать? Хотя вроде оно и так должно работать, потому как написано: The property is read/write for all objects except the following, for which it is read-only: COL, COLGROUP, FRAMESET, HTML, STYLE, TABLE, TBODY, TFOOT, THEAD, TITLE, TR. |
вставляй инфу через инер сразу с тегом OBJECT
|
Цитата:
В IE опять же проблемы... Кстати, интересная злостная статья на тему почему НЕ НАДО использовать innerHTML: http://www.javascriptkata.com/2007/0...-html-objects/ |
Цитата:
|
dmitriymar, понимаете... проблемы такие, что я даже затрудняюсь описать их словами. Вы, думаю догадались, что OBJECT - это Adobe Flash Player (type="application/x-shockwave-flash")
Так вот это дело вроде и работает.. но периодически не работает (на одном и том же коде и при одних и тех же параметрах). Выражается это внешне в так, что как будто бы Flash "недогрузился" и перестает реагировать на любые события. Этот феномен повторяется нестабильно, не за что зацепиться. Он то есть, то нет. И такое только в IE. |
Маэстро,
ну дак я это понял. и сталкивался с этим-тоже не понимал что за фигня-почему работает а потом всё-лежит.причём в одинаковых браузерах у одних работает в ие у других лежит мёртво. проблема оказалась в доктайпе |
вот еще, что забыл сказать. Все же обнаружил закономерность, которую не могу объяснить:
п.1. Открываю чистый броузер IE, захожу на страницу - Flash работает. п.2. Обновляю страницу (F5) - Flash не работает! и после последующих нажатий F5 тоже не работает. п.3. Закрываю полностью броузер далее всё повторяется с первого пункта. аналогичный эффект при открытии страницы в другой закладке одного и того же броузера. а доктайп... знаете, мож я и не прав, но я привык испытывать в первую очередь всё без доктайпа. объясню почему: мой скрипт предполагается быть внедренным на других (чужих сайтах). и я не смогу заставить людей менять его на своих серверах. поэтому оно должно работать при любом доктайпе. |
плеер поменять попробуй.
http://flv-mp3.com/ru/ |
Цитата:
2. Но я таки нашел решение вышеописанной проблемы. И хоть некоторые тут обвиняли меня в занятиях "магией", но с IE иногда без бубна просто не канает. Следите за моей мыслью ;) Если фокусы с подвисанием плеера происходят при запуске броузера и последующем обновлении, то скорее всего это как-то связано с кешированием в броузере, так? Тем более, что давно заметил, что кеширование в IE наиболее тупое. Классические строчки в заголовке страницы типа: <meta http-equiv="Expires" content="Thu, 01 Dec 1991 01:00:00 GMT"> <meta http-equiv="Pragma" content="no-cache">-не помогает! И тогда я рискнул и воспользовался технологией борьбы с кешированием, используемую при работе с XMLHttpRequest и добавил в плеере в путь к файлу *.swf случайный параметр для борьбы с кешированием ?nocache='+Math.random()Причем достаточно поставить это в секцию data="...", а в секцию <param name="movie" value="..." />-не обязательно. И свершилось чудо. IE работает стабильно и прогнозируемо! Немного беспокоит, что у пользователя при обновлении страницы будет каждый раз загружаться swf-файл по-новой, но это ерунда, т.к. он всего 13K. 3. Открытая мною тема (в заголовке) всё же в силе. |
погодь. а без аякс ты не пробовал менять содержимое объект?
|
Цитата:
Если речь об объекте Adobe Flash Player (внедренном в свою очередь в объект OBJECT), то без аякса работает. Но у меня ситуация сложнее: грузится страница сайта и уже в процессе ее загрузки запускается аякс, который в свою очередь грузит Flash... который.... которого... в доме который построил Джек ;) только не спрашивайте меня, зачем так сложно. могу только сказать, что именно в такой ситуации IE "путается". остальные броузеры нормально понимают чего от них хотят. |
о флеше спрашивал. у меня замена содержимого в объекте через inner в фф пару месяцев назад отказалась работать.точнее замена была -работы не было. так что только про ие утверждение спорное
|
Цитата:
в любом случае если мой подход Вам поможет и в FF, то я рад |
И вот что еще вспомнил к предыдущему. В самом начале я говорил, что в FF есть нюансы... эти нюансы могут быть для Вас решающими.
Как Вы создаете тот DIV, в который вставляется OBJECT flash? Есть два варианта: 1. <div id="mama"></div> var a = document.getElementById('mama'); a.innerHTML='....FLASH...'; 2. var a = document.createElement('mama'); кудато.appendChild(a); a.innerHTML='....FLASH...'; Вроде бы по сути одно и то же. Но первый вариант в FF работает, второй - нет. И еще одно примечание: материнский DIV "mama" на момент внедрения FLASH должен быть видимым! Иначе FLASH работать не будет. Почему? - надо спросить у Adobe. |
случайный параметр в строке это не лучший выход. просто отправляйте браузеру нужные заголовки и проблема будет решена
header('Cache-Control: no-cache, must-revalidate'); header('Cache-Control: post-check=0,pre-check=0', false); header('Cache-Control: max-age=0', false); header('Pragma: no-cache'); |
Цитата:
А как их формировать, если с сервера отправляется файл *.txt? *.js? *.swf? Делать настройку файла .htaccess как мы обсуждали в теме http://javascript.ru/forum/ajax/2643-kodirovka.html ? А если *.swf загружается с чужого сервера, то... просить админов чужого сервера внести настройки в их сервер для меня? ;) |
ну дак шлите эти заголовки axaj;)
xmlhttp.setRequestHeader('Cache-Control', 'no-cache, must-revalidate'); |
Цитата:
Утверждаю, что в IE 8 это не работает! а у Вас? Давайте пофилософствуем на эту тему. В вопросах кеширования сервер посылает заголовки броузеру, чтобы он (броузер) понял как ему поступать. А что получается в Вашем варианте? Вы из броузера посылаете заголовок серверу (по поводу кеширования). И... что дальше? ;) |
Часовой пояс GMT +3, время: 11:12. |