>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >js: перехват событий http://forum.mozilla-russia.org/viewtopic.php?id=4737 |
Rion > 27-08-2005 15:49:41 |
вычитал я в документации по gecko следующее...
так вот что-то от этого useCapture фаирфоксу не жарко не холодно. не перехватывает он события. вот тестовый код:
вроде всё правильно делаю. в IE аналогичная ф-ия setCapture работает на ура. что можете подсказать? кстати чтоб не создавать ещё одну тему, ещё один глюк. вот код:
Попробуйте вместо none поставить например groups или rows, в общем что угодно. посравнивайте с тем как это отрисовывает IE.. PS а где искать про глюки гекко? чтото на бугзилле такая куча продуктов.. где там именно про гекко... |
Unghost > 27-08-2005 17:50:22 |
Взгляни на http://sleepyhead81.blogspot.com/2005/05/cross-browser-event-handling.html |
Rion > 27-08-2005 18:30:23 |
Unghost пишет
не помогло... да и пример который на этой страничке писали какие-то горе-программисты.. чтоб действительно стал кроссбраузерным пришлось его переделывать. в прочем что бы не делал, захват событий всё равно не работает. про оперу (там упоминается что она DOM2 юзает) вообще молчу, при попытке использовать захват, вообще не то чтобы из вне события не доходят, так и от самого элемента на который listener ставим событий никаких нет. с фаирфоксом точно также как в моем примере... вобщем пойду в бугзиллу постить баги и буду ждать новых версий фокса.. |
Anton > 27-08-2005 21:04:45 |
Rion,
обработчик события назначается элементу с id='test', так что неудивительно, что вне этого элемента он не работает. А нужно, если я правильно понял, вот так:
P.S.: А еще проще - вот так:
одинаково работает и в IE и в FF. Равно как и <div onclick=... и т. д. |
Rion > 27-08-2005 21:32:09 |
Anton пишет
вся суть в использовании useCapture заключается в том что элемент перехватывает все события данного типа! т.е. согласно моему примеру если бы код перехватчика был такой то мы если бы даже щелками мимо элемента то всё равно получали бы "Здесь перехватывает". так что твой пример не канает.. конечно всегда можно пойти обходным путем, но всё же хочется чтоб любимый браузер следовал тем стандартам о которых заявлено хотя может я и гоню чего.. в IE при такой подходе this в любом случае на window указывает, короче гон ещё в большей степени...) |
Anton > 27-08-2005 22:05:01 |
Так ведь в документации написано, что
... все события указанного типа будут переданы зарегистрированному обработчику перед тем (т. е., до того), как они будут переданы приемникам, находящимся ниже в дереве элементов. Действие параметра useCapture можно проследить по последовательности появления цифр "1" и "2" в следующем примере:
|
ioppp > 28-08-2005 18:40:01 |
Anton |
Anton > 28-08-2005 20:53:11 |
ioppp пишет
ioppp, так ведь я и не говорил, что пример из поста #6 работает в IE. То, что работает в IE, записано в постскриптуме поста #4. |
ioppp > 28-08-2005 22:33:38 |
Многоуважаемый Anton |
Rion > 29-08-2005 10:36:09 |
вот мой пример работающий в IE Выделить код Код:<html> <body> <div style="border:1px solid black" id='test'>Здесь перехватывает</div>А здесь уже нет, хотя должен <script type="text/javascript"> document.getElementById('test').attachEvent('onclick', testfunc); document.getElementById('test').setCapture(true); function testfunc () { alert("есть контакт"); } </script> </body> </html> всё что я хотел, это чтоб ф-ия addEventListener с использованием параметра useCapture работала также как этот пример Это что еще за подпись такая? Мол, кликнешь, и винт отформатируется... Отлично. А ведь на форум ходят женщины, а они - очень любопытны по своей природе. Да и среди мужиков немало тех, что неглядя кликает куда попало. В общем, нарушение п3.8. Замечание. RED |