Здравствуйте, DSD, Вы писали:
DSD>Здравствуйте, mogadanez, Вы писали:
DSD>>>panel.getBoundingClientRect() — возвращает красный прямоугольник — точнее 4 координаты, описывающие его. DSD>>>panel.getClientRects() — вернет в данной ситуации массив из 3х синих прямоугольников. M>>хм... а у какой ноды ты это вызываешь что тебе такое вернет? DSD>и у панелей и у самих доков. в MSDN есть описание этих методов. они аппликабельны почти к каждому визуальному элементу.
я не понимаю какая разметка должна быть чтобы док такой формы получился.
DSD>только что добил отношения с childNodes — теперь запускается и в файрфоксе. правда пока ничего не таскается, но сами доки создаются, уже радует
еще в mozille нету event:
function glob_mm( e ) {
e = ensure_event_object(e);e.returnValue=false;
}
function ensure_event_object ( e )
{
if ( e == null ) e = window.event;
return e;
}
Здравствуйте, mogadanez, Вы писали:
M>Здравствуйте, DSD, Вы писали:
M>еще, M>в мозилле M>table.insertRow(index) M>row.insertCell(index)
M>сегда надо индекс передавать, иначе падает
дык уже сделал давно...
M>я не понимаю какая разметка должна быть чтобы док такой формы получился.
например сделай внутри текста SPAN, в который запихни три широких картинки, настолько широких, чтобы две картинки в один ряд не помещались в ширину экрана — вот и готово SPAN — не блочный элемент, он не будет, как DIV, всегда тянуться неразбиваемым прямоугольником. по крайней мере в IE.
вот зайди сейчас и посмотри http://911.ru/to_rsdn/docking.html
докпанель в тексте сейчас у тебя так и должна выглядеть составной. и в мозиле тоже.
Здравствуйте, mogadanez, Вы писали:
M>Здравствуйте, DSD, Вы писали:
DSD>>только что добил отношения с childNodes — теперь запускается и в файрфоксе. правда пока ничего не таскается, но сами доки создаются, уже радует
M>еще в mozille нету event:
M>
M>function glob_mm( e ) {
M> e = ensure_event_object(e);
M> e.returnValue=false;
M>}
M>function ensure_event_object ( e )
M>{
M> if ( e == null ) e = window.event;
M> return e;
M>}
M>
после этого осталось несовместимого:
* getBoundingClientRect
* getClientRects
* setCapture
* releseCapture
Здравствуйте, DSD, Вы писали:
DSD>Здравствуйте, mogadanez, Вы писали:
M>>Здравствуйте, DSD, Вы писали:
M>>еще, M>>в мозилле M>>table.insertRow(index) M>>row.insertCell(index)
M>>сегда надо индекс передавать, иначе падает DSD>дык уже сделал давно...
Здравствуйте, DSD, Вы писали:
DSD>например сделай внутри текста SPAN, в который запихни три широких картинки, настолько широких, чтобы две картинки в один ряд не помещались в ширину экрана — вот и готово SPAN — не блочный элемент, он не будет, как DIV, всегда тянуться неразбиваемым прямоугольником. по крайней мере в IE.
DSD>вот зайди сейчас и посмотри DSD>http://911.ru/to_rsdn/docking.html DSD>докпанель в тексте сейчас у тебя так и должна выглядеть составной. и в мозиле тоже.
угу, только когда туда чтонибудь перетягиваешь она сжимается по содержимому
с эвентами разобрался вроде. правда перевернул твой способ взад — пишу его насильно в window.event
M>после этого осталось несовместимого: M>* getBoundingClientRect M>* getClientRects M>* setCapture M>* releseCapture
от последних двух (*Capture) можно избавиться, если mousemove привязать к document.body.attachEvent и сделать таким образом глобальный перехват мыши.
getClientRects можно вычислять самому — геморно и не факт что быстро работать будет, а можно забить на него и цепляться только к getBoundingClientRect. а насчет него уж я и не знаю... есть ему замена в виде get_obj_client_rect() (см. в коде, я ее оставил) — но будет ли она везде работать и с какой производительностью?
Здравствуйте, mogadanez, Вы писали:
DSD>>вот зайди сейчас и посмотри DSD>>http://911.ru/to_rsdn/docking.html DSD>>докпанель в тексте сейчас у тебя так и должна выглядеть составной. и в мозиле тоже. M>угу, только когда туда чтонибудь перетягиваешь она сжимается по содержимому
а это потому что пока там нет доков — там есть картинки-растяжки, как док добавляешь — ее содержимое запоминается и вычищается.
если с нее убрать потом все доки — содержимое (растяжки) восстановится.
Здравствуйте, DSD, Вы писали:
DSD>от последних двух (*Capture) можно избавиться, если mousemove привязать к document.body.attachEvent и сделать таким образом глобальный перехват мыши.
Здравствуйте, DSD, Вы писали:
DSD>Здравствуйте, mogadanez, Вы писали:
DSD>>>вот зайди сейчас и посмотри DSD>>>http://911.ru/to_rsdn/docking.html DSD>>>докпанель в тексте сейчас у тебя так и должна выглядеть составной. и в мозиле тоже. M>>угу, только когда туда чтонибудь перетягиваешь она сжимается по содержимому DSD>а это потому что пока там нет доков — там есть картинки-растяжки, как док добавляешь — ее содержимое запоминается и вычищается. DSD>если с нее убрать потом все доки — содержимое (растяжки) восстановится.
а зачем тогда нужны прямоугольники? по идее тогда важен только верхний левый угол?
Здравствуйте, mogadanez, Вы писали:
M>Здравствуйте, DSD, Вы писали:
DSD>>от последних двух (*Capture) можно избавиться, если mousemove привязать к document.body.attachEvent и сделать таким образом глобальный перехват мыши.
Здравствуйте, mogadanez, Вы писали:
M>а зачем тогда нужны прямоугольники? по идее тогда важен только верхний левый угол?
да нет, нужно точно знать, когда мышь находится именно над панелью при перетаскивании.
и более того, если на панели уже есть док и мышь над ним, я еще и вычисляю сектор этого дока, в котором находится мышь, чтобы бросить новый док перед текущим или после него.
вот возьми в IE и поиграйся с доками — ты можешь "тасовать" их мышью на панели.
Здравствуйте, DSD, Вы писали:
DSD>вот возьми в IE и поиграйся с доками — ты можешь "тасовать" их мышью на панели.
правда сейчас я только горизонтально центры сравниваю — бросаешь док до середины лежащего на панели дока или после.
сравнение по вертикали потом доделаю — пока в виде теста ограничился этим.
Здравствуйте, DSD, Вы писали:
DSD>Здравствуйте, mogadanez, Вы писали:
M>>а зачем тогда нужны прямоугольники? по идее тогда важен только верхний левый угол? DSD>да нет, нужно точно знать, когда мышь находится именно над панелью при перетаскивании.
а вот это уже лучше... =)
т.е. задача определить принадлежит ли координата элементу или нет?
DSD>и более того, если на панели уже есть док и мышь над ним, я еще и вычисляю сектор этого дока, в котором находится мышь, чтобы бросить новый док перед текущим или после него.
Здравствуйте, mogadanez, Вы писали:
M>т.е. задача определить принадлежит ли координата элементу или нет?
фактически да, но расширяется она все равно в задачу получить координаты панели(лей) и задачу получить координаты дока(ов).
M>но ведь в этом случае панель уже прямоугольная?
нет. вариант составной панели с картинками-растяжками — это я те для примера сделал. в реальности совсем наоборот — подразумевается, что панель становится сложноформенной именно когда ты в нее набросаешь кучу доков, что она по ширине вмещаться в окно не будет — тогда она разбивается.
хотя в контексте того, о чем мы сейчас(о тасовании доков) это не важно — на этом этапе сравниваются уже исключительно координаты доков, координаты панели уже не учавствуют в момент "броска" на нее. они учавствовали во время таскания над ней дока.
Здравствуйте, anonymous, Вы писали:
A>Здравствуйте, DSD, Вы писали:
DSD>>вот собственно и вопрос: как пробежаться по иерархии "переносимым" способом, без document.all ?
A>
A>var all = document.getElementsByTagName('*');
A>