Здравствуйте, DSD, Вы писали:
DSD>от последних двух (*Capture) можно избавиться, если mousemove привязать к document.body.attachEvent и сделать таким образом глобальный перехват мыши.
а почему глобально надо вешаться на мышь? почему не приатачится к каждой панели?
Здравствуйте, mogadanez, Вы писали:
M>Здравствуйте, DSD, Вы писали:
DSD>>от последних двух (*Capture) можно избавиться, если mousemove привязать к document.body.attachEvent и сделать таким образом глобальный перехват мыши.
M>а почему глобально надо вешаться на мышь? почему не приатачится к каждой панели?
1. нельзя приаттачиваться к панелям потому что события мыши над ней будут возникать только когда непосредственно мышь будет находиться непосредственно над видимой частью панели. а если мышь в это время тащит док, что происходит? правильно, док перекрывает собой панель и до панели события мыши не дойдут.
2. если имелся ввиду док — т.е. приаттачиваться к его событиям(как сейчас и сделано), то без setCapture и при интенсивном движении мыши док постоянно теряет ее из виду и доставка событий прекращается.(в смысле не успеваешь при таскании док двигать за мышью — мышь быстрее ).
Здравствуйте, DSD, Вы писали:
DSD>Здравствуйте, mogadanez, Вы писали:
M>>Здравствуйте, DSD, Вы писали:
DSD>>>от последних двух (*Capture) можно избавиться, если mousemove привязать к document.body.attachEvent и сделать таким образом глобальный перехват мыши.
M>>а почему глобально надо вешаться на мышь? почему не приатачится к каждой панели? DSD>1. нельзя приаттачиваться к панелям потому что события мыши над ней будут возникать только когда непосредственно мышь будет находиться непосредственно над видимой частью панели. а если мышь в это время тащит док, что происходит? правильно, док перекрывает собой панель и до панели события мыши не дойдут.
а как же баблинг?
DSD>2. если имелся ввиду док — т.е. приаттачиваться к его событиям(как сейчас и сделано), то без setCapture и при интенсивном движении мыши док постоянно теряет ее из виду и доставка событий прекращается.(в смысле не успеваешь при таскании док двигать за мышью — мышь быстрее ).
DSD>2. если имелся ввиду док — т.е. приаттачиваться к его событиям(как сейчас и сделано), то без setCapture и при интенсивном движении мыши док постоянно теряет ее из виду и доставка событий прекращается.(в смысле не успеваешь при таскании док двигать за мышью — мышь быстрее ).
setCapture используется только чтобы Move отлавливать? или на все события?
Здравствуйте, mogadanez, Вы писали:
DSD>>2. если имелся ввиду док — т.е. приаттачиваться к его событиям(как сейчас и сделано), то без setCapture и при интенсивном движении мыши док постоянно теряет ее из виду и доставка событий прекращается.(в смысле не успеваешь при таскании док двигать за мышью — мышь быстрее ).
M>setCapture используется только чтобы Move отлавливать? или на все события?
move и последующий up
Здравствуйте, mogadanez, Вы писали:
DSD>>1. нельзя приаттачиваться к панелям потому что события мыши над ней будут возникать только когда непосредственно мышь будет находиться непосредственно над видимой частью панели. а если мышь в это время тащит док, что происходит? правильно, док перекрывает собой панель и до панели события мыши не дойдут. M>а как же баблинг?
и куда мне его засунуть?
представь. ты тащишь док над панелью, и не просто над панелью, а над другим доком, лежащим на панели(а над ним еще один док просто "висит"). мне cancelBubble во всех наслоенных доках прописывать, чтобы в конечном итоге до панели дошло, что над ней чего-то там тащат?
В ие выглядит неплохо... но код это что то с чем то...
Советую взять как пример кода библиотеку Rico.js(она юзает prototype.js) там довольно таки красивый ООП(использую JSON). Я для своих джс контролов взял за пример их код, и prototype.js тоже дал мне немало удобства.
Здравствуйте, DSD, Вы писали:
DSD>Здравствуйте, mogadanez, Вы писали:
DSD>>>2. если имелся ввиду док — т.е. приаттачиваться к его событиям(как сейчас и сделано), то без setCapture и при интенсивном движении мыши док постоянно теряет ее из виду и доставка событий прекращается.(в смысле не успеваешь при таскании док двигать за мышью — мышь быстрее ).
M>>setCapture используется только чтобы Move отлавливать? или на все события? DSD>move и последующий up
на неделе времени было не много, надеюсь на выходных займусь.
если есть изменения, выложи их на сайт
Здравствуйте, DSD, Вы писали:
DSD>Здравствуйте, marx paul, Вы писали:
MP>>http://webfx.eae.net/dhtml/dockbar/dockbar.html MP>>http://webfx.eae.net/dhtml/dockbar/dockbar3.html DSD>да, забавно, но там чел изначально в задумке урезал функционал и упростил задачу, что печально.
в принципе, коль уж ты мне напомнил этими ссылками, у себя я таки реализовал hotspot-autosnap. это когда тащишь док и при приближении к краю окна на определенное расстояние активируется соответствующая боковая панель.
Здравствуйте, DSD, Вы писали:
DSD>Здравствуйте, DSD, Вы писали:
DSD>>Здравствуйте, marx paul, Вы писали:
MP>>>http://webfx.eae.net/dhtml/dockbar/dockbar.html MP>>>http://webfx.eae.net/dhtml/dockbar/dockbar3.html DSD>>да, забавно, но там чел изначально в задумке урезал функционал и упростил задачу, что печально. DSD>в принципе, коль уж ты мне напомнил этими ссылками, у себя я таки реализовал hotspot-autosnap. это когда тащишь док и при приближении к краю окна на определенное расстояние активируется соответствующая боковая панель.
DSD>без этих ссылок руки бы не скоро еще дошли
с нетерпением ожидаю кроссбраузерной реализации!
какой бы линк сюда запостить, чтобы ускорить процесс адаптации?
Здравствуйте, marx paul, Вы писали:
MP>с нетерпением ожидаю кроссбраузерной реализации! MP>какой бы линк сюда запостить, чтобы ускорить процесс адаптации?
ну, адаптирую не я, а mogadanez в основном
линки постить не нужно. с моей стороны мне осталось для совместимости избавиться от setCapture/releaseCapture, склепать более-менее нормальные аналоги IE-шных функций для вычисления координат объектов и оформить это все для вырезания в отдельный JS-модуль. так же упакую все в автосоздаваемый объект dock_manager — таким образом все переменные и методы локализуются и не будут засорять global scope. сделаю, как руки дойдут — времени свободного сейчас не очень много.
дальше дело за mogadanez — приведение всего этого барахла в нормально отображающийся во всех браузерах интерфейс.
DSD>...и оформить это все для вырезания в отдельный JS-модуль. так же упакую все в автосоздаваемый объект dock_manager — таким образом все переменные и методы локализуются и не будут засорять global scope. сделаю, как руки дойдут — времени свободного сейчас не очень много.
еще раз предлагаю нашу модель JS модулей. =)
выглядит это примерно так:
core.js.register_module( "proofs.controls.file_comments.client.round_box", function()
{
core.js.import_module( "components.webcontrols.client.client.base_view_object" )
core.js.import_module( "core.js.build_class2" )
core.js.import_module( "components.webcontrols.client.client.workarounds" )
core.js.import_module( "core.lists.map" )
var workarounds = components.webcontrols.client.client.workarounds;
var round_box = core.js.build_class2( "", function()
{
this.__base_classes__ = [ components.webcontrols.client.client.base_view_object ];
this.__constructor__ = function( node_id )
{
this.base_view_object( node_id );
}
this.methods.init_form_elements = function ( self )
{
this.set_onclick( this.nodes.lnk_new_comment, function( e ) { return self.on_new_comment( e ); } );
this.set_onclick( this.nodes.lnk_new_review, function( e ) { return self.on_new_review( e ); } );
this.set_onclick( this.nodes.btn_edit, function( e ) { return self.on_edit( e ); } );
this.set_onclick( this.nodes.btn_cancel, function( e ) { return self.on_cancel( e ); } );
}
this.methods.get_nodes_map = function()
{
return { lnk_new_comment : "lnk_new_comment",
lnk_new_review : "lnk_new_review",
btn_edit : "btn_edit",
btn_cancel : "btn_cancel",
post_comment_div : "post_comment_div"
};
}
this.methods.on_edit = function ( e )
{
...
}
this.methods.on_cancel = function ( e )
{
...
}
this.methods.on_new_comment = function ( e )
{
...
}
this.methods.on_new_review = function ( e )
{
...
}
} );
return { round_box: round_box };
} );