Как получить offsetWidth элемента
Плиз объяснить новичку, почему не выводиться ширина div. В Opera, EI, Chrom работает а в Мозилле нет:
<div id="mydiv" style="width: 100%; display: block;">qwerty</div> <script> var znach = mydiv.offsetWidth + 'px'; document.write(znach); </script> И если можно скиньте ссылочку если где-нить есть развёрнутая инфа по решению данной проблемы. |
Chum,
getElementById |
<div id="mydiv" style="width: 100%; display: block;">qwerty</div> <div id="write"></div> <script> var znach = document.getElementById('mydiv').offsetWidth + 'px'; document.getElementById('write').innerHTML=znach; </script> |
Спасибо за ответ. Попробую немного уточнить ситуацию, вот например строка html-страницы в которую внедряется SWF-файл:
Код:
<?php echo $widthSWF; ?> коротко и понятно. Вопрос: есть-ли аналогичный способ вставки при помощи JS короткого значения, или мне придётся загонять весь код div-а внедрения SWF в строку в функции JS, там-же подставлять переменные и выводить всё это при помощи document.getElementById('write').innerHTML |
Chum,
Непонятно объяснили - выложите HTML код элемента и всех входящих в элемент (*Вставка кода - кнопка ![]() и укажите какому элементу и что нужно прописать |
Всё объяснять долго. Речь идёт о вставке в контент SWF-файла, причём рассматривается вариант задания размеров не явных (НЕ н.п. 800 и 600 пкс), а возможно в процентах, для более полного отображения SWF-файла на различных мониторах. Сделать это зная только разрешение монитора не получится, для этого требуется знать реальную ширину div в который внедряется SWF-файл, что можно сделать как я понимаю только в JS при загрузке непосредственно в браузер. При загрузке будет произведён расчёт реальных размеров, выбран оптимальный вариант и весь код будет записан в html.
Я пишу на ActionScript 3, этот язык похож на JS но я с JS работал мало и поэтому сейчас у меня некоторые затруднения. Сейчас я пробую в JS создать строковую переменную вставки SWF с подстановкой полученных в результате расчёта значений размеров SWF-файла а затем методом document.getElementById('write').innerHTML записать эту строку в div, тем самым вставить SWF-файл. |
Chum,
Итоговый HTML ,без скриптов И второе: размеры до загрузки контента и после - могут быть различны Какой нужен ? |
Вот первоначальный html от которого я отталкивался, он взят из Дрима.
<div style="background-color:#<?php echo $this->item->colswf; ?>"> <?php echo $this->item->editra; ?> <div> <script src="components/com_kartarf/images/swf/Scripts/swfobject_modified.js" type="text/javascript"></script> <object id="FlashID" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="<?php echo $this->item->swfwdt; ?>" height="<?php echo $this->item->swfhgt; ?>"> <param name="movie" value="components/com_kartarf/images/swf/karta.swf" /> <param name="quality" value="high" /> <param name="wmode" value="window" /> <param name="swfversion" value="6.0.65.0" /> <param name="flashvars" value="<?php echo $this->item->strFlVar; ?>"/> <!-- Этот тег param предлагает пользователям Flash Player 6.0 r65 и более поздних версий загрузить последнюю версию Flash Player. Удалите его, если не хотите, чтобы пользователи видели запрос. --> <param name="expressinstall" value="Scripts/expressInstall.swf" /> <!-- Следующий тег object не поддерживается браузером Internet Explorer. Поэтому скройте его от Internet Explorer при помощи IECC. --> <!--[if !IE]>--> <object type="application/x-shockwave-flash" data="components/com_kartarf/images/swf/karta.swf" width="<?php echo $this->item->swfwdt; ?>" height="<?php echo $this->item->swfhgt; ?>"> <!--<![endif]--> <param name="quality" value="high" /> <param name="wmode" value="window" /> <param name="swfversion" value="6.0.65.0" /> <param name="expressinstall" value="components/com_kartarf/images/swf/Scripts/expressInstall.swf" /> <param name="flashvars" value="<?php echo $this->item->strFlVar; ?>"/> <!-- Браузер отображает следующее альтернативное содержимое для пользователей Flash Player 6.0 и более старых версий. --> <div> <h4>Для содержимого этой страницы требуется более новая версия Adobe Flash Player.</h4> <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Получить проигрыватель Adobe Flash Player" width="112" height="33" /></a></p> </div> <!--[if !IE]>--> </object> <!--<![endif]--> </object> <script type="text/javascript"> swfobject.registerObject("FlashID"); </script> </div><?php echo $this->item->editrb; ?></div> Если внимательно посмотреть на HTML можно понять что речь идет о компоненте Joomla 2.5 |
В конечном итоге требуется задать оптимальную высоту SWF для того монитора на котрый загружается SWF
|
Из того html который я выложил я уберу все комментарии, уберу кое-какие необязательные теги, соберу html покомпактнее, обращу в строку, вставлю полученные из JS размеры и выведу в div, хотя если бы можно было бы тупо вставить полученные размеры в строки 5 и 15 то было бы проще.
|
Прошу подсказать, упростил вставку SWF и вот что получилось:
Вот это работает: <div id="kart" style="width: 100%; text-align: center;"> <object id="FlashID" width="100%" height="600" data="components/com_kartarf/images/swf/karta.swf" type="application/x-shockwave-flash"> <param name="movie" value="components/com_kartarf/images/swf/karta.swf" /> <param name="quality" value="high" /> <param name="wmode" value="window" /> <param name="swfversion" value="6.0.65.0" /> <param name="flashvars" value="<?php echo $this->item->strFlVar; ?>"/> <param name="expressinstall" value="Scripts/expressInstall.swf" /> <div><h4>Для содержимого этой страницы требуется более новая версия Adobe Flash Player.</h4> <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Получить проигрыватель Adobe Flash Player" width="112" height="33" /></a></p></div> </object> </div> А вот это не работает <div id="kart" style="width: 100%; text-align: center;"></div> <script> var znach = "<object id=\"FlashID\" width=\"100%\" height=\"600\" data=\"components/com_kartarf/images/swf/karta.swf\" type=\"application/x-shockwave-flash\">"; znach += "<param name=\"movie\" value=\"components/com_kartarf/images/swf/karta.swf\" />"; znach += "<param name=\"quality\" value=\"high\" />"; znach += "<param name=\"wmode\" value=\"window\" />"; znach += "<param name=\"swfversion\" value=\"6.0.65.0\" />"; znach += "<param name=\"flashvars\" value=\"<?php echo $this->item->strFlVar; ?>\"/>"; znach += "<param name=\"expressinstall\" value=\"Scripts/expressInstall.swf\" />"; znach += "<div><h4>Для содержимого этой страницы требуется более новая версия Adobe Flash Player.</h4>"; znach += "<p><a href=\"http://www.adobe.com/go/getflashplayer\"><img src=\"http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif\" "; znach += "alt=\"Получить проигрыватель Adobe Flash Player\" width=\"112\" height=\"33\" /></a></p></div>"; znach += "</object>"; document.getElementById('kart').innerHTML=znach; </script> В чём ошибка ? |
<script> var znach = '<object id=\"FlashID\" width=\"100%\" height=\"600\" data=\"components/com_kartarf/images/swf/karta.swf\" type=\"application/x-shockwave-flash\">'; znach += '<param name=\"movie\" value=\"components/com_kartarf/images/swf/karta.swf\" />'; znach += '<param name=\"quality\" value=\"high\" />'; znach += '<param name=\"wmode\" value=\"window\" />'; znach += '<param name=\"swfversion\" value=\"6.0.65.0\" />'; znach += '<param name=\"flashvars\" value=\"<?php echo $this->item->strFlVar; ?>\"/>'; znach += '<param name=\"expressinstall\" value=\"Scripts/expressInstall.swf\" />'; znach += '<div><h4>Для содержимого этой страницы требуется более новая версия Adobe Flash Player.</h4>'; znach += '<p><a href=\"http://www.adobe.com/go/getflashplayer\"><img src=\"http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif\" '; znach += 'alt=\"Получить проигрыватель Adobe Flash Player\" width=\"112\" height=\"33\" /></a></p></div>'; znach += '</object>'; document.getElementById('kart').innerHTML=znach; </script> |
<script> var znach = '<object id="FlashID" width="100%" height="600" data="components/com_kartarf/images/swf/karta.swf" type="application/x-shockwave-flash">\ <param name="movie" value="components/com_kartarf/images/swf/karta.swf" />\ <param name="quality" value="high" />\ <param name="wmode" value="window" />\ <param name="swfversion" value="6.0.65.0" />\ <param name="flashvars" value="<?php echo $this->item->strFlVar; ?>"/>\ <param name="expressinstall" value="Scripts/expressInstall.swf" />\ <div><h4>Для содержимого этой страницы требуется более новая версия Adobe Flash Player.</h4>\ <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" \ alt="Получить проигрыватель Adobe Flash Player" width="112" height="33" /></a></p></div>\ </object>'; document.getElementById('kart').innerHTML=znach; </script> |
Спасибо.
Последний вариант работает. Я первоначально делал подобное но в моём варианте слеш - \ в конце строки я не ставил, я и не знал что так можно, век живи - век учись. Ещё раз спасибо, буду дальше терзать JS. |
И ещё один момент - отсутствие экранирования двойных кавычек \ и обрамление всей строки одинарными, такого у себя я что-то не припоминаю. Буду знать.
|
Ещё раз спасибо за помощь. Если кому-либо будет интересно где всё это было использовано, плиз на мой сайт:
http://kersha.ru/index.php?option=co...47&It emid=76 |
Часовой пояс GMT +3, время: 18:27. |