Страницы: 1
Приветсвую!
Пишу плугин на XPCom (С++), задача следующая:
Есть html-страничка примерно такая:
<form action="http://site.ru/" method="post">
<input type="text" name="value" value=""/>
<input type="submit" value="Submit" />
</form>
Нужно отловить момент когда происходит заполнение post-запроса и попытка его отправки на сервер.
Мне нужно прочитать передаваемые значения и в зависимости от их содержимого либо разрешить отправку, либо остановить редирект не обновляя страницу.
Посоветуйте в каком интерфейсе это можно сделать?
Смотрел исходники firefox и нашел что что-то похоже происходит в nsHttpChannel.cpp в функции
sHttpChannel::ProcessRedirection(PRUint32 redirectType){ ............................. // здесь какая-то подготовка к загрузке новой страницы ............................. // call out to the event sink to notify it of this redirection. if (mHttpEventSink) { rv = mHttpEventSink->OnRedirect(this, newChannel); if (NS_FAILED(rv)) return rv; } .................................... // если дошли до сюда, то грузим редирект-страницу .................................... }
Вопрос в следующем: можно ли сделать то что мне нужно подписавшись на nsIHttpEventSink:onRedirect (см. nsIHttpEventSink.idl)? Может быть есть способы попроще?
И если все нужно делать через интерфейс nsIHttpEventSink, то как на него подписаться, через RegisterFactory или как-то по другому?
Отсутствует
Можно подписать observer на http-on-examine-response и у него в subject будет объект с интерфейсом nsIHttpChannel.
Что касается nsIHttpEventSink - вот здесь: http://www.xulplanet.com/references/xpcomref/ifaces/nsIHttpEventSink.html написано, что надо реализовывать объект с этим интерфейсом. А потом он назначается в channel.notificationsCallback или аргументом в asyncOpen (в js).
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Спасибо за комментарий, решил делать по другому, на форме создал кнопку и прописал в событии onClick вызов своей функции, которую разместил в js.
Более подробно в этой теме: http://forum.mozilla-russia.org/viewtopic.php?id=24677
Отсутствует
Страницы: 1