Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Получение ширины контента.. (https://javascript.ru/forum/misc/1908-poluchenie-shiriny-kontenta.html)

SunnyDay 03.10.2008 12:42

Получение ширины контента..
 
Дело в том что пытаюсь получить реальную ширину документа, точнее его правую границу. Попробовал такой код:
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 я в документе оставить не могу, иначе порушу некоторые чужие скрипты, поэтому сначала создаю, потом удаляю.

SunnyDay 03.10.2008 13:33

Так, с ие и оперой разобрался - я использовал переменную doc_maxX_fv, в CSS expressions.

Остался один вопрос - это как-нибудь можно сделать поизящнее, или попроще? В IE например это тормозит немного..

jsch 07.10.2008 14:53

ответ
 
document.getElementsByTagName("body")[0].clientWidth

jsch 07.10.2008 14:54

ответ
 
если я правильно понял...

magistr_bender 07.10.2008 15:32

во.. я давно такой скрипт ищу.. то что надо)


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