Thursday, December 21, 2017

На странице SP2010 лежат две веб-части, одна библиотеки рисунков, другая списка голосования, так я реализую функционал голосования за фотографии пользователей.

Вопрос в том, что нижняя кнопка OK наполовину скрывается, когда окно браузера сжимают и верхнее меню делается в две строчки.

Мне как то сразу стало ясно, что есть некий блок основного контента, высота которого рассчитывается скриптом и не учитывает высоту строки меню. (может в оригинальном шарике и учитывает, не проверял, но в поделке софтлайновской DeskWork это не работает).

Алгоритм действий.
1. Посмотреть в инструментарии разработчика в браузере, какой именно блок вычисляется скриптом. Это заметно по инлайновой установке аттрибутов ширины и высоты после загрузки страницы. В моем случае это оказался блок s4-workspace.

2. Набираем признак найденного блока (id, class) в поиске в инструментах разработчика, нам показываются все места где он встречается. Нас интересуют скрипты. Блок в моем случае встречается лишь однажды в init.js.

3. Включаем PrettyPrint, видим аккуратненький скрипт с расчетом высоты:
Видим переменную в которую берется наш блок. Смотрим ниже по коду, видим выражение, рассчитывающее высоту блока:
var e = d - b.offsetHeight - AbsTop(b);
    if (e < 0)
        e = 0;
    a.style.height = e + "px";
Далее нам надо найти другие переменные в коде: d, b.

На странице SP2010 лежат две веб-части, одна библиотеки рисунков, другая списка голосования, так я реализую функционал голосования за фотог...