Показать сообщение отдельно
  #1 (permalink)  
Старый 03.10.2008, 12:42
Кандидат Javascript-наук
Отправить личное сообщение для SunnyDay Посмотреть профиль Найти все сообщения от SunnyDay
 
Регистрация: 22.09.2008
Сообщений: 111

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