Out script
Материал из Eludia.
Описание
Обёртка над out_html, генерирующая HTML-страницу, которая при загрузке исполняет js-код, заданный 1-м аргументом.
При этом, если задан 2-й аргумент, то он сериализуется при помощи $_JSON -> encode и доступен в качестве переменной data.
Предполагается, что в норме такие страницы должны загружаться в невидимый iframe (как правило, iframe с именем 'invisible', доступный на каждой странице). Соответственно, DOM страницы, видимой пользователю, при этом доступен через переменную parent.
При этом разумно свести все манипуляции с parent к вызову единственной функции от data (в нижеприведённом примере такая функция называется switch_cell). Данную функцию удобнее всего определить в контексте видимой страницы при помощи процедуры js или, ещё лучше, function.
Синопсис (Perl 5)
# в Content-части
out_script (switch_cell => {
cell_id => "#day_$_REQUEST{dt}",
color_id => $id ? 1 : 0,
});
### или, что то же самое
out_script ('parent.switch_cell (data)', {
cell_id => "#day_$_REQUEST{dt}",
color_id => $id ? 1 : 0,
});
# а в Presentation-части function switch_cell => ('data'), q { \$(data.cell_id).css ({backgroundColor: color [data.color_id]}); setCursor (); }; ### или, что то же самое js qq { var color = ['$color[0]', '$color[1]']; function switch_cell (data) { \$(data.cell_id).css ({backgroundColor: color [data.color_id]}); setCursor (); } }; ...
