Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Вопрос по актуальности свойства для соврем. брауз.


Автор: Wolf1994 25.9.2006, 19:03
Оправдано ли применение свойств:
clientWidth, clientHeight, clientLeft, clientTop?

Все ли современные браузеры их поддерживают?.. В моей документации написано, что "NN - n/a", но ведь на Netscape уже можно не ориентрироваться? А FF 1.5.0.7 уже их поддерживает...

Автор: Sardar 25.9.2006, 22:09
Наверное с лет так 5 уже оправданно smile
Хотя это ad-hoc решение на не продуманность style.width, когда поле пустое если не заданно, к тому же строка. Современные браузеры поддерживают ещё и runtimeStyle, где лежат актуальные значения, но client* всё же проще, надёжней, да и лежит там число в пикселах.

Автор: Wolf1994 26.9.2006, 01:27
...Какая-то ерунда у меня вышла с этим свойством... Вроде, скачал скрипт RichMedia с "download-заглушки" Агавы, убрал всё лишнее, запустил и он нормально отработал:

Код

<div>
dfmkfdmf fngs bfb nbfgvjm vrbmb vrkvm kvm vklvnb dmnl<br />
mlkm dfmkfdmf fngs bfb nbfgvjm vrbmb vrkvm kvm vklvnb dmnl<br />
...etc...
</div>

<script>
var RM_Height=300;
var RM_Width=100;
var Client_Width = 0;
var Client_Height = 0;
var RM_Coord_X=0;
var RM_Coord_Y=0;

function Locate_RM_Banner()
{
 Client_Width=document.body.clientWidth;
 Client_Height=document.body.clientHeight;
 RM_Coord_X=Client_Width/2-RM_Width/2;
 RM_Coord_Y=Client_Height/2-RM_Height/2;
 document.getElementById("FlashDiv").style.top=document.body.scrollTop+RM_Coord_Y;
 document.getElementById("FlashDiv").style.left=document.body.scrollLeft+RM_Coord_X;
}


function test()
{
 Locate_RM_Banner();
 window.onscroll=Locate_RM_Banner;
 window.onresize=Locate_RM_Banner;
 document.getElementById("FlashDiv").style.display="";  
}

</script>
<a href="javascript:void(0)" onclick="test()">TEST</a>

<div id='FlashDiv' style='background:green; position:absolute; left:50%; top:50%; width:300px; height:100px; z-index:65535; display:none'>
</div>


Но при написании финального скрипта, пришлось использовать "родные" свойства FireFox - по-другому, ничего не получалось:

Код

  ab_o=document.getElementById("alert_box_id");
  try
  {
   ab_o.style.top=scrollY+(innerHeight/2-50)+"px";
   ab_o.style.left=scrollX+(innerWidth/2-150)+"px";
  }
  catch(e)
  {
   ab_o.style.top=document.body.scrollTop+(document.body.clientHeight/2-50)+"px";
   ab_o.style.left=document.body.scrollLeft+(document.body.clientWidth/2-150)+"px";
  }


Возможно, я что-то упустил. Или же, дело в условиях работы: 1 - вызывался, как приведён, 2 - из внешнего файла, в документе XHTML 1.0 Transitional?

 smile 

Автор: Wolf1994 26.9.2006, 15:29
Цитата

Возможно, я что-то упустил. Или же, дело в условиях работы: ...в документе XHTML 1.0 Transitional?

Выяснил, дело именно в этом.

Спасибо. Вопрос можно считать решённым.

Автор: Sardar 26.9.2006, 17:07
Цитата(Wolf1994 @  26.9.2006,  14:29 Найти цитируемый пост)
Выяснил, дело именно в этом.

Я бы не спешил убирать доктайп, тогда браузер вывалиться в http://www.quirksmode.org/css/quirksmode.html, в котором будет рисовать страницы только одному ему известным способом, в каждой бродилке по разному будет.

Что конкретно не работает? http://www.quirksmode.org/viewport/compatibility.html.

Автор: Wolf1994 26.9.2006, 22:38
Цитата

Что конкретно не работает?


В FireFox 1.5.0.7 с продекларированным доктэйпом не работало:

Код

   ab_o.style.top=document.body.scrollTop+(document.body.clientHeight/2-50)+"px";



Цитата

Полезно почитать. 


Приму к сведению.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)