вычитал я в документации по gecko следующее...

addEventListener
addEventListener allows the registration of event listeners on the event target.
Syntax
element.addEventListener( type, listener, useCapture )

useCapture
If true, useCapture indicates that the user wishes to initiate capture. After initiating capture, all events of the specified type will be dispatched to the registered EventListener before being dispatched to any EventTargets beneath them in the tree. Events which are bubbling upward through the tree will not trigger an EventListener designated to use capture.

так вот что-то от этого useCapture фаирфоксу не жарко не холодно. не перехватывает он события. вот тестовый код:

<html>
<body onLoad="document.getElementById('test').addEventListener('click', testfunc, true);">
<div style="border:1px solid black" id='test'>Здесь перехватывает</div>А здесь уже нет, хотя должен
<script type="text/javascript">
function testfunc () { alert("есть контакт"); }
</script>
</body>
</html>

вроде всё правильно делаю. в IE аналогичная ф-ия setCapture работает на ура. что можете подсказать?


кстати чтоб не создавать ещё одну тему, ещё один глюк. вот код:

<html>
<body>
<table border="20" rules="none">
  <tr><td>&nbsp;</td></tr>
</table>
</body>
</html>

Попробуйте вместо none поставить например groups или rows, в общем что угодно. посравнивайте с тем как это отрисовывает IE..

PS а где искать про глюки гекко? чтото на бугзилле такая куча продуктов.. где там именно про гекко...
PSS Mozilla/5.0 (Windows; U; Windows NT 5.0; ru; rv:1.8b4) Gecko/20050815 Firefox/1.0+

Взгляни на http://sleepyhead81.blogspot.com/2005/05/cross-browser-event-handling.html
Может поможет.

Unghost пишет

Взгляни на http://sleepyhead81.blogspot.com/2005/05/cross-browser-event-handling.html
Может поможет.

не помогло... да и пример который на этой страничке писали какие-то горе-программисты.. чтоб действительно стал кроссбраузерным пришлось его переделывать. в прочем что бы не делал, захват событий всё равно не работает. про оперу (там упоминается что она DOM2 юзает)  вообще молчу, при попытке использовать захват, вообще не то чтобы из вне события не доходят, так и от самого элемента на который listener ставим событий никаких нет. с фаирфоксом точно также как в моем примере...

вобщем пойду в бугзиллу постить баги и буду ждать новых версий фокса..

Rion,

<html>
<body onLoad="document.getElementById('test').addEventListener('click', testfunc, true);">
<div style="border:1px solid black" id='test'>Здесь перехватывает</div>А здесь уже нет, хотя должен
<script type="text/javascript">
function testfunc () { alert("есть контакт"); }
</script>
</body>
</html>

обработчик события назначается элементу с id='test', так что неудивительно, что вне этого элемента он не работает. А нужно, если я правильно понял, вот так:

...
<body onLoad="document.addEventListener('click', testfunc, true);">
...

P.S.: А еще проще - вот так:

...
<body onclick="testfunc();">
...

одинаково работает и в IE и в FF. Равно как и <div onclick=... и т. д.

Anton пишет

обработчик события назначается элементу с id='test', так что неудивительно, что вне этого элемента он не работает. А нужно, если я правильно понял, вот так:

вся суть в использовании useCapture заключается в том что элемент перехватывает все события данного типа! т.е. согласно моему примеру если бы код перехватчика был такой

Выделить код

Код:

function testfunc () { alert(this.innerHTML); }

то мы если бы даже щелками мимо элемента то всё равно получали бы "Здесь перехватывает". так что твой пример не канает.. конечно всегда можно пойти обходным путем, но всё же хочется чтоб любимый браузер следовал тем стандартам о которых заявлено

хотя может я и гоню чего.. :) в IE при такой подходе this в любом случае на window указывает, короче гон ещё в большей степени...)

Так ведь в документации написано, что

After initiating capture, all events of the specified type will be dispatched to the registered EventListener before being dispatched to any EventTargets beneath them in the tree.

... все события указанного типа будут переданы зарегистрированному обработчику перед тем (т. е., до того), как они будут переданы приемникам, находящимся ниже в дереве элементов.

Действие параметра useCapture можно проследить по последовательности появления цифр "1" и "2" в следующем примере:

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
</head>
<body onclick="document.getElementById('test').addEventListener('click', testfunc, false);">
<div id='test' style="border:1px solid black"><p onclick="alert('1');">Параграф с обработчиком</p><br/><p>Просто параграф</p></div>Какой-то текст
<script type="text/javascript">
function testfunc () { alert("2"); }
</script>
</body>
</html>

Anton
Посмотрел я твой пример, а также примеры Rion'а.
Смотрел я в DPa2 -Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20050826 , Opera-8.10-7685, K-Meleon c разными ревизиями и Gecko,IE 6.0.2900.2180.xpsp2_gdr.050301-1519.
Opera отображает картинку твоего примера несколько по-другому, чем  Gecko и IE, а IE при клике на второй строчке - ноль эмоций, никаких цифр, хотя вроде бы я всё разрешил делать IE.

ioppp пишет

... а IE при клике на второй строчке - ноль эмоций, никаких цифр, хотя вроде бы я всё разрешил делать IE.

ioppp, так ведь я и не говорил, что пример из поста #6 работает в IE. То, что работает в IE, записано в постскриптуме поста #4.

Многоуважаемый Anton
Это я написал под впечатлением бага в первом посте Rion'а.
Лазил по бугзилле, по http://www.mozilla.org/newlayout/faq.html и тому подобным местам ... :) - был весь в поиске.
Так что прошу прощения за свою невнимательность.
Вот !!!
:)

вот мой пример работающий в 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
Ответ: ну так я предупредил чтоб не кликали :)