Получение ширины контента..
Дело в том что пытаюсь получить реальную ширину документа, точнее его правую границу. Попробовал такой код:
window.onresize=getContentWidth;
function getContentWidth()
{
div_fv=document.createElement('div');
div_fv.style.position="absolute";
//
document.body.appendChild(div_fv);
while (document.body.childNodes.length>4)
{
var first_el=document.body.firstChild;
if(first_el.id!="rig_zg"&&first_el.id!="rig_ban") // это мои элементы, которые не нужно считать
div_fv.appendChild(first_el);
}
//
doc_maxX_fv=div_fv.getBoundingClientRect().right;;
//
var insEl=document.getElementById("rig_zg");
while (div_fv.childNodes.length>0)
{
document.body.insertBefore(div_fv.firstChild,insEl);
}
document.body.removeChild(div_fv);
return doc_maxX_fv;
};
Работает только на фоксе - в IE и в опере getBoundingClientRect().right не изменяется при ресайзе окна (а должен, так как блочные элементы сжимаются друг-к-другу, если окошко сделать поменьше), но при запуске - стабильно. Правда ИЕ тормозит сильно.. 1. Что сделать, чтобы работало при ресайзе на ИЕ и опере? 2. Правильный ли это метод, если нет, то как получить? Оговорка - родительский тег div я в документе оставить не могу, иначе порушу некоторые чужие скрипты, поэтому сначала создаю, потом удаляю. |
Так, с ие и оперой разобрался - я использовал переменную doc_maxX_fv, в CSS expressions.
Остался один вопрос - это как-нибудь можно сделать поизящнее, или попроще? В IE например это тормозит немного.. |
ответ
document.getElementsByTagName("body")[0].clientWidth
|
ответ
если я правильно понял...
|
во.. я давно такой скрипт ищу.. то что надо)
|
| Часовой пояс GMT +3, время: 14:44. |