Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Отследить изменение body.scrollWidth (https://javascript.ru/forum/events/6755-otsledit-izmenenie-body-scrollwidth.html)

Yazla 19.12.2009 15:42

Отследить изменение body.scrollWidth
 
Здравствуйте.
У меня следующая проблема. Мне нужно чтоб размер некоторых элементов изменялся если изменяется размер body, в частности ширина, но не ширина окна, а ширина внутренняя учитывая прокручиваемую область. В IE эта ширина находится в свойстве body.scrollWidth, но как узнать когда она изменилась? Ивент onresize естественно не подходит, так как отслеживает размер окна браузера.
Может кто-то решал такую проблему.

Спасибо

x-yuri 21.12.2009 15:43

не туда копаешь, событие должны генерировать элементы изменяющие scrollWidth. Другой способ вряд ли есть

subzey 22.12.2009 00:09

Yazla,
если еще актуально, дайте ссылку на Ваш проект.

Уверен, Вам нужен, скорее, не яваскрипт, а css.

Yazla 23.12.2009 21:15

x-yuri
Цитата:

не туда копаешь, событие должны генерировать элементы изменяющие scrollWidth. Другой способ вряд ли есть
Спасибо за ответ.
Трабл в том, что я работаю с asp.net контролом который генерит довольно сложный html текст и отследить какой html елемент является первопричиной изменения scrollWidth практически не реально. Я конечно могу окружить всё дивом но у дивов, насколько я знаю, нету события ресайз.

subzey
Цитата:

Если еще актуально, дайте ссылку на Ваш проект.

Уверен, Вам нужен, скорее, не яваскрипт, а css.
Спасибо за ответ.
Актуально, но к сожалению не могу дать ссылку на проект, так как всё на локальной машине да ещё и проект корпоративный и требует чтоб юзер был в домене.
Возможно вы правы насчёт css. Тогда могу переформулировать вопрос: какой стиль нужно применить к диву, чтобы его ширина изменялась и ставала равной body.scrollWidth если body.scrollWidth изменилась каким либо образом? Надеюсь понятно обьяснил.

Спасибо.

Riim 24.12.2009 03:17

Цитата:

Сообщение от Yazla
чтобы его ширина изменялась и ставала равной body.scrollWidth если body.scrollWidth изменилась каким либо образом

это поведение по умолчанию.

Yazla 24.12.2009 12:43

Цитата:

Сообщение от Riim (Сообщение 39023)
это поведение по умолчанию.

Спасибо за ответ.
Только что специально проверил, нет, это не поведение по умолчанию.

Riim 24.12.2009 12:57

Цитата:

Сообщение от Yazla
это не поведение по умолчанию

плохо проверял.

Yazla 24.12.2009 13:22

Цитата:

Сообщение от Riim (Сообщение 39046)
плохо проверял.

Возможно.
Можеш попробывать сам.
Вставь этот код в консоль фаербага
//добавим див который по умолчанию должен был бы "подстраиатся под //document.body.scrollWidth" 

var testDiv =  document.createElement("div");
testDiv.style.height = '10px';
testDiv.style.backgroundColor = 'Black';
document.body.appendChild(testDiv);

// добавим второй див который заставит изменится document.body.scrollWidth
var testDiv2 =  document.createElement("div");
testDiv2.style.height = '10px';
testDiv2.style.width= '10px';
testDiv2.style.backgroundColor = 'Red';
testDiv2.style.position= 'absolute';
document.body.appendChild(testDiv2);
testDiv2.style.left= '2000px';

Странно но у меня ширина первого дива не изменилась.

Riim 24.12.2009 13:29

Зачем javascript?

http://softwaremaniacs.org/blog/2005...s-layout-flow/
Цитата:

Блочные боксы (или просто "блоки") - это прямоугольники, которые занимают по ширине все доступное им место и никуда не переносятся. А вот собственной высоты они не имеют. Их размер по высоте определяется теми боксами, которые они содержат в себе. И это - содержание в себе других боксов - их основная задача. Содержать в себе они могут и строчные боксы, и блочные.

Yazla 24.12.2009 13:55

Цитата:

Сообщение от Riim (Сообщение 39051)

Этот код генерит хтмл для примера и не более. И этот пример тебе всё показывает.
Если ты можеш привести обратный пример то приведи.


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