У меня задача: нужно программно  (с-под С++), нажать на DOM-элемент.
Нашел несколько примеров по данному вопросу, вот мой код
(написан на С# с использованием GeckoFX, но думаю, суть понять можно)

Skybound.Gecko.GeckoElement el; /////<-- этот элемент(nsIDomElement) у нас есть изначально, для него нужно сгенерировать событие
Skybound.Gecko.nsIDOMEventTarget x = (Skybound.Gecko.Xpcom.QueryInterface<Skybound.Gecko.nsIDOMEventTarget>(el.DomObject));

Skybound.Gecko.nsIDOMEvent evt =    ((Skybound.Gecko.nsIDOMDocumentEvent)gWebBrowser.Document.DomObject).createEvent(new Skybound.Gecko.nsAString("MouseEvents"));
            Skybound.Gecko.nsIDOMMouseEvent me = (Skybound.Gecko.nsIDOMMouseEvent)evt;
            Skybound.Gecko.nsIDOMAbstractView ddv = Skybound.Gecko.Xpcom.QueryInterface<Skybound.Gecko.nsIDOMAbstractView>(gWebBrowser.Window.DomWindow);


            Skybound.Gecko.nsAString st = new Skybound.Gecko.nsAString("click");
            me.InitMouseEvent(st, true, false, ddv, 0, 0, 0, 0, 0, false, false, false, false, 0, 0);
            x.DispatchEvent(me);

Проблема в чем: если el у нас будет кнопка, чекбокс и т.п - все отлично работает, но если передать в el гиперссылку или баннер - событие вроде генерируется, но переход по ссылке не производится.

В чем может біть загвоздка? Может кто-то с данной задачей сталкивался?

подозреваю, что в данном случае вызывается метод onclick ссылки, которого нету.
тут лучше просто взять src от ссылки и изменить url страницы на него, эффект будет аналогичный

Да, согласен. Спасибо. Покопавшись в спецификации DOM, выяснил, что такое поддерживается только для элементов управления типа кнопок. ;)

тут лучше просто взять src от ссылки и изменить url страницы на него

а если в ссылке прописан вызов функции яваскрипта, к примеру onclick. Как заставить его отработать из С++?