спасибо, за помощь, но в окне только кнопки (ссылка и див с событиями onclick). я наверное пока остановлюсь на своем велосипеде со скроллом на 1 px т.к. он работает.
тут кстати на ios safari вылез еще один странный баг, баг браузера судя по всему: если на ВСЕ элементы забинтить эвенту scroll prevenDefault(), то все казалось бы ок, скролл отрубается везде.
Но в сафари на ИОС есть место в самом низу окна, где вылезает навигейшн бар, так вот, когда этот навигейшн бар скрыт, то касаясь в то место, где он должен находиться (50-60 пикселей внизу окна), можно скроллить страницу как ни в чем не бывало. А у всех элементов скролл заблочен. genius.jpg
к сожалению, не могу не трогать overflow hidden, тк оверлей и окно подрубаются к любой странице, соответственно, надо переопределить body и html css свойства тех страниц на наши, а как оверлей закрыли - вернуть их обратно в те значения. которые были
Я вот сделал так: у html и body в момент показа оверлея с окном фигачу overflow: hidden, в результате overlay рисуется четко под window. Но появилась от этого проблема в IOS Safari - нам нужно рисовать оверлей например, если страница проскроллена более 400 пикселей по высоте. Если обновить страницу, при этом она проскроллена, пикселей на 500 (значение не важно, главное, что бы скролл был) вниз, то после обновления, оверлей рисуется визуально нормально, но реальное расположение оверлея находится выше, чем он отображается, т.е. если у овереля в модальном окне есть кнопки, сколько бы ты не кликал по ней - ничего не произойдет, а вот если кликнешь выше, в пустое место - то клик обработается.
Если после отрисовки оверлея отресайзить страницу или скролльнуть её, то реальное положение оверлея станет аналогичным его видимому положению и все станет нормально.
Соответственно, я пока костыль сделал, при отрисовки оверлея скроллю страницу на 1 пиксель вверх или вниз от текущей позиции window. Интересно и то, что если скролльнуть на 1 пиксель в одну сторону и тут же на 1 пиксель обратно, то реальная позиция оверлея не изменится. Вот такие дела.
сначала был fixed, если страница по ширине была со скролл баром и сдвинута вбок, то оверлей рисовался не под окном а левее. Если добавлял через js window.pageXoffset - рисовался правее окна оО.
Причем забавно было, вывожу css left оверлея - 0px, вывожу window.pageXoffset - 200px, к примеру. Задаю оверлею css left равным window.pageXoffset, вывожу опять его css left - 200px, смотрю на экран - оверлей сдвинут относительно окна пикслей на 90 вправо, точно не считал.
нужно отобразить на экране modal окно через N секунд, при этом заблочив touchmove. ну и соответственно щас проблема в том, что бы блочить touchmove даже, если touchmove в данный момент выполняется
ну так то у меня есть контроллеры и компоненты, но мне пояснили в другом месте, что лучше все это дело переделать в виджет (хотя в yii к виджету ajax'ом стучаться нельзя, но можно сделать обновление данных через pjax)
ну ок, а если у меня 30 свойств, 20 из которых я хочу в массив пихнуть, мне 20 раз прописывать:
$this->array['myAmazingPropery1'] = $this->myAmazingPropery1;
$this->array['myAmazingPropery2'] = $this->myAmazingPropery2;
...
$this->array['myAmazingPropery20'] = $this->myAmazingPropery20;
FanatPHP: мне надо некоторые свойства класса (значения - объекты, строки и массивы) пихнуть в одну сессию. Соответственно, я их все в массив пихаю и массив уже пихаю в сессию
Далее я хочу создать новый элемент массива, где ключ будет именем вышеуказанного св-ва, значение - значение свойства.
Сейчас я прописываю это дело вручную, уменя около 8-ми свойств:
$this->array['myAmazingPropery'] = $this->myAmazingPropery;
$this->array['myAmazingPropery1'] = $this->myAmazingPropery1;
$this->array['myAmazingPropery2'] = $this->myAmazingPropery2;
Но я хочу вместо ручного прописывания сделать метод, аргументом которому передавать массив вида:
[$this->myAmazingPropery, $this->myAmazingPropery1, ...]
В этом методе будет перебираться переданный методу массив со свойствами и автоматически строиться новый массив $this->array.
Проблема в том, что я не знаю, как мне получить имя свойства что бы пихнуть его в кач-ве ключа элемента массива $array