Javascript-форум (https://javascript.ru/forum/)
-   Firefox/Mozilla (https://javascript.ru/forum/css-html-firefox-mizilla/)
-   -   Как получить offsetWidth элемента (https://javascript.ru/forum/css-html-firefox-mizilla/34762-kak-poluchit-offsetwidth-ehlementa.html)

Chum 17.01.2013 19:31

Как получить 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>
И если можно скиньте ссылочку если где-нить есть развёрнутая инфа по решению данной проблемы.

рони 17.01.2013 19:37

Chum,
getElementById

Deff 17.01.2013 19:39

<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>

Chum 17.01.2013 21:40

Спасибо за ответ. Попробую немного уточнить ситуацию, вот например строка html-страницы в которую внедряется SWF-файл:
Код:


<object id="FlashID" classid="clsid:A27CDB6E-AE6D-11cf-96B8-444553540000" width="100%"
height="<?php echo $widhSWF; ?>">

В этой строке высота SWF-файла задаётся при помощи PHP-скрипта:
<?php echo $widthSWF; ?>
коротко и понятно.
Вопрос: есть-ли аналогичный способ вставки при помощи JS короткого значения, или мне придётся загонять весь код div-а внедрения SWF в строку в функции JS, там-же подставлять переменные и выводить всё это при помощи document.getElementById('write').innerHTML

Deff 17.01.2013 21:59

Chum,
Непонятно объяснили - выложите HTML код элемента и всех входящих в элемент (*Вставка кода - кнопка
и укажите какому элементу и что нужно прописать

Chum 17.01.2013 22:56

Всё объяснять долго. Речь идёт о вставке в контент SWF-файла, причём рассматривается вариант задания размеров не явных (НЕ н.п. 800 и 600 пкс), а возможно в процентах, для более полного отображения SWF-файла на различных мониторах. Сделать это зная только разрешение монитора не получится, для этого требуется знать реальную ширину div в который внедряется SWF-файл, что можно сделать как я понимаю только в JS при загрузке непосредственно в браузер. При загрузке будет произведён расчёт реальных размеров, выбран оптимальный вариант и весь код будет записан в html.
Я пишу на ActionScript 3, этот язык похож на JS но я с JS работал мало и поэтому сейчас у меня некоторые затруднения.
Сейчас я пробую в JS создать строковую переменную вставки SWF с подстановкой полученных в результате расчёта значений размеров SWF-файла а затем методом document.getElementById('write').innerHTML записать эту строку в div, тем самым вставить SWF-файл.

Deff 17.01.2013 23:00

Chum,
Итоговый HTML ,без скриптов
И второе: размеры до загрузки контента и после - могут быть различны
Какой нужен ?

Chum 17.01.2013 23:14

Вот первоначальный 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

Chum 17.01.2013 23:18

В конечном итоге требуется задать оптимальную высоту SWF для того монитора на котрый загружается SWF

Chum 17.01.2013 23:24

Из того html который я выложил я уберу все комментарии, уберу кое-какие необязательные теги, соберу html покомпактнее, обращу в строку, вставлю полученные из JS размеры и выведу в div, хотя если бы можно было бы тупо вставить полученные размеры в строки 5 и 15 то было бы проще.


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