Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Так есть или нет innerHTML в теге <OBJECT> и DOM-объекте типа OBJECT? (https://javascript.ru/forum/events/17816-tak-est-ili-net-innerhtml-v-tege-object-i-dom-obekte-tipa-object.html)

Маэстро 03.06.2011 18:45

Так есть или нет 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.

dmitriymar 03.06.2011 19:25

вставляй инфу через инер сразу с тегом OBJECT

Маэстро 03.06.2011 19:54

Цитата:

Сообщение от dmitriymar (Сообщение 107269)
вставляй инфу через инер сразу с тегом OBJECT

Этот вариант я знаю. Работает в Google Chrome, Opera, FireFox.
В IE опять же проблемы...

Кстати, интересная злостная статья на тему почему НЕ НАДО использовать innerHTML:
http://www.javascriptkata.com/2007/0...-html-objects/

dmitriymar 03.06.2011 20:20

Цитата:

Сообщение от Маэстро
В IE опять же проблемы...

у меня в ие проблем не наблюдалось. доктайп посмотри

Маэстро 03.06.2011 20:28

dmitriymar, понимаете... проблемы такие, что я даже затрудняюсь описать их словами. Вы, думаю догадались, что OBJECT - это Adobe Flash Player (type="application/x-shockwave-flash")
Так вот это дело вроде и работает.. но периодически не работает (на одном и том же коде и при одних и тех же параметрах). Выражается это внешне в так, что как будто бы Flash "недогрузился" и перестает реагировать на любые события. Этот феномен повторяется нестабильно, не за что зацепиться. Он то есть, то нет. И такое только в IE.

dmitriymar 03.06.2011 20:37

Маэстро,
ну дак я это понял. и сталкивался с этим-тоже не понимал что за фигня-почему работает а потом всё-лежит.причём в одинаковых браузерах у одних работает в ие у других лежит мёртво. проблема оказалась в доктайпе

Маэстро 03.06.2011 20:40

вот еще, что забыл сказать. Все же обнаружил закономерность, которую не могу объяснить:
п.1. Открываю чистый броузер IE, захожу на страницу - Flash работает.
п.2. Обновляю страницу (F5) - Flash не работает! и после последующих нажатий F5 тоже не работает.
п.3. Закрываю полностью броузер
далее всё повторяется с первого пункта.
аналогичный эффект при открытии страницы в другой закладке одного и того же броузера.

а доктайп... знаете, мож я и не прав, но я привык испытывать в первую очередь всё без доктайпа. объясню почему: мой скрипт предполагается быть внедренным на других (чужих сайтах). и я не смогу заставить людей менять его на своих серверах. поэтому оно должно работать при любом доктайпе.

dmitriymar 03.06.2011 20:58

плеер поменять попробуй.
http://flv-mp3.com/ru/

Маэстро 03.06.2011 22:05

Цитата:

Сообщение от dmitriymar (Сообщение 107279)
плеер поменять попробуй.
http://flv-mp3.com/ru/

1. Плеер менять не буду. Я слишком долго его выбирал и поисследовал наверное с два десятка. flv-mp3.com - лучшим не считаю.

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. Открытая мною тема (в заголовке) всё же в силе.

dmitriymar 03.06.2011 23:34

погодь. а без аякс ты не пробовал менять содержимое объект?


Часовой пояс GMT +3, время: 04:31.