Полезная информация

Пользователи не любят читать документацию. Станьте оригинальным, будьте не как все. Ознакомьтесь с нашей базой знаний.

№101-03-2006 17:10:52

Zaratustra
Участник
 
Группа: Members
Зарегистрирован: 01-03-2006
Сообщений: 8

Перехват навигации + помощь новичку

Здраствуйте!
Я в этой области "полный новичек" и нуждаюсь в вашей помощи.
Не расскажите, как сделать плагин к ФФ, который бы просто выдавал МессаджБокс с линкой, на которую юзер кликнул/ввел/и_т._п.? Т.е. перехватить навигацию и показать куда он хочет перейти.
Это первое, а второе, как я могу сделать из-под плагина следующее:
- запустить приложение с параметрами;
- передать уже запущенному приложению какую-нибудь информацию. В языках программирования, можно было использовать WinAPI и там все было просто. А как тут?
И нельзя ли писать плагины к ФФ на Си(С++/VC++) или других языках программирования.

Спасибо всем откликнувшимся.

Отсутствует

 

№202-03-2006 13:46:21

Zaratustra
Участник
 
Группа: Members
Зарегистрирован: 01-03-2006
Сообщений: 8

Re: Перехват навигации + помощь новичку

Госопода, неужели никто не писал обработчик клика/ввода_урла в своих плагинах?

Отсутствует

 

№302-03-2006 17:01:25

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
Веб-сайт

Re: Перехват навигации + помощь новичку


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№402-03-2006 17:10:23

Zaratustra
Участник
 
Группа: Members
Зарегистрирован: 01-03-2006
Сообщений: 8

Re: Перехват навигации + помощь новичку

Смотрел я статьи, на которые вы меня послали и то что мне нужно не нашел.
А в ветке форума, другой вопрос рассматривается.
Прошу прощения, но нельзя ли по-конкретнее?

Отсутствует

 

№502-03-2006 17:24:47

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
Веб-сайт

Re: Перехват навигации + помощь новичку

Zaratustra пишет

Смотрел я статьи, на которые вы меня послали и то что мне нужно не нашел.
А в ветке форума, другой вопрос рассматривается.
...

Разве ?

...
Прошу прощения, но нельзя ли по-конкретнее?

...как сделать плагин к ФФ, который бы просто выдавал МессаджБокс с линкой, на которую юзер кликнул/ввел/и_т._п.?...

Плагины не для этого. Плагины - для отображения объектов <embed>, <object> веб-страничек. Если плагин и обрабатывает пользовательский ввод, то только в своей части окна.

И нельзя ли писать плагины к ФФ на Си(С++/VC++) или других языках программирования.

А на чём же ещё их писать ?

Стало быть, расширение. Первые две ссылки.

Zaratustra пишет

Госопода, неужели никто не писал обработчик клика/ввода_урла в своих плагинах?

Третья ссылка.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№602-03-2006 17:32:24

Zaratustra
Участник
 
Группа: Members
Зарегистрирован: 01-03-2006
Сообщений: 8

Re: Перехват навигации + помощь новичку

Пардон, не плагин, а расширение. Я так "выразился" по аналогии с ИЕ.
Что касается третьей ссылки, то если я все правильно понял, то там идет речь об обработчике клика на кнопке, а мне нужен перехват навигации.
Т.е. получение УРЛа, который передается ФФ при попытке перехода на другую страницу и т.п.

Отсутствует

 

№702-03-2006 17:56:20

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
Веб-сайт

Re: Перехват навигации + помощь новичку

Zaratustra пишет

...
Что касается третьей ссылки, то если я все правильно понял, то там идет речь об обработчике клика на кнопке, а мне нужен перехват навигации...

Какая разница - кнопка или ссылка ? В первом случае будет input/html:input, во втором - a/html:a.

Смену вкладок можно "отловить" так:

Выделить код

Код:

const STATE_START = Components. interfaces. nsIWebProgressListener. STATE_START;
const STATE_STOP = Components. interfaces. nsIWebProgressListener. STATE_STOP;

function registerProgressListener ()
{
    window. getBrowser (). addProgressListener (ProgressListener, STATE_START);
}

function unregisterProgressListener ()
{
  window. getBrowser (). removeProgressListener (ProgressListener, STATE_STOP);
}

window. addEventListener ("load", registerProgressListener, false);
window. addEventListener ("unload", unregisterProgressListener, false);

var ProgressListener =
{
    QueryInterface: function (aIID)
    {
        if (aIID. equals (Components. interfaces. nsIWebProgressListener) ||
            aIID. equals (Components. interfaces. nsISupportsWeakReference) ||
            aIID. equals (Components. interfaces. nsIXULBrowserWindow) ||
            aIID. equals (Components. interfaces. nsISupports))
            return this;
        throw Components. results. NS_NOINTERFACE;
    },
    onStateChange: function (a, b, c, d) {},
    onProgressChange: function (a, b, c, d, e, f) {},
    onLocationChange: function (a, b, c) { alert (window. getBrowser (). location. href); },
    onStatusChange: function (a, b, c, d) {},
    onSecurityChange: function (a, b, c) {}
}

Подробнее о интерфейсе nsIWebProgress здесь: http://www.xulplanet.com/references/xpc … tener.html

Может есть и более общий способ доступа к навигации.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№802-03-2006 17:59:46

Zaratustra
Участник
 
Группа: Members
Зарегистрирован: 01-03-2006
Сообщений: 8

Re: Перехват навигации + помощь новичку

А как быть с вводом в адресной строке и выбором из закладок?

Отсутствует

 

№903-03-2006 04:47:29

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
Веб-сайт

Re: Перехват навигации + помощь новичку

Zaratustra пишет

А как быть с вводом в адресной строке и выбором из закладок?

Примерно так же. Для "отлова" ввода в адресной строке нужен обработчик события textentered.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№1003-03-2006 13:18:46

Zaratustra
Участник
 
Группа: Members
Зарегистрирован: 01-03-2006
Сообщений: 8

Re: Перехват навигации + помощь новичку

А закладки?
Неужели нет более общего средства? Что-то мне подсказывает, что можно найти еще способы перехода по какой-нибудь ссылке, кроме ввод/клик/закладка...
Как думаешь?

Отсутствует

 

№1103-03-2006 14:03:30

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
Веб-сайт

Re: Перехват навигации + помощь новичку

Zaratustra пишет

А закладки?...
Как думаешь?

А про закладки читай здесь: http://forum.mozilla.ru/viewtopic.php?pid=89022#p89022


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№1203-03-2006 14:11:57

Zaratustra
Участник
 
Группа: Members
Зарегистрирован: 01-03-2006
Сообщений: 8

Re: Перехват навигации + помощь новичку

Спасибо, Антон.
Буду разбираться и пытаться объединить все это воедино.
Если кто знает более общий способ для перехвата навигации, то буду крайне рад.

Кстати, а нет ли расширения, логирующего серфинг?

Отсутствует

 

№1303-03-2006 14:41:57

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
Веб-сайт

Re: Перехват навигации + помощь новичку

Zaratustra пишет

...нет ли расширения, логирующего серфинг?

Есть. Live HTTP Headers, TamperData.
Mozilla сама умеет логировать трафик, наверное и FF может.

...более общий способ для перехвата навигации...

1. Можно отслеживать изменения history.
2. Можно xbl написать для browser/tabbrowser.
3. Наверное, можно свою реализацию интерфейса (как его там) - nsIWebNavigation, что ли - "пришить" к browser'у.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№1403-03-2006 14:51:58

Zaratustra
Участник
 
Группа: Members
Зарегистрирован: 01-03-2006
Сообщений: 8

Re: Перехват навигации + помощь новичку

1. Можно отслеживать изменения history.

По идее, history, изменяется ПОСЛЕ того как страница будет загружена или когда сессия работы с сервером будет завершена. Мне же нужно это делать ПЕРЕД тем как запрос будет поставлен в очередь, т.к. если ссылка не на Инет, а скажем на файл на диске(а это мне обрабатывать нужно тоже), то этот метод не сработает так как это нужно.

2. Можно xbl написать для browser/tabbrowser.
3. Наверное, можно свою реализацию интерфейса (как его там) - nsIWebNavigation, что ли - "пришить" к browser'у.

А в этом я совсем ......

Отсутствует

 

№1503-03-2006 16:10:07

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
Веб-сайт

Re: Перехват навигации + помощь новичку

...более общий способ для перехвата навигации...

Выделить код

Код:

var observer =
{
    observe: function (subject, topic, data)
    {
        if (subject instanceof Components. interfaces. nsIHttpChannel);
        alert ("originalURI: " + subject. originalURI. spec);
        //alert ("URI: " + subject. URI. spec);
    }
};
var observerService = Components. classes ["@mozilla.org/observer-service;1"]
                     .getService(Components. interfaces. nsIObserverService);
observerService. addObserver (observer, "http-on-modify-request", false);

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№1603-03-2006 16:15:52

alc
Участник
 
Группа: Extensions
Откуда: Чебоксары
Зарегистрирован: 02-03-2005
Сообщений: 296

Re: Перехват навигации + помощь новичку

Тут недавно мучился с отловом History, метод дубовый и медленный, но надежный :D


Бди!

Отсутствует

 

№1719-08-2009 15:14:04

malor
Участник
 
Группа: Members
Зарегистрирован: 13-08-2009
Сообщений: 20
UA: Foxware 0.0

Re: Перехват навигации + помощь новичку

Необходимо осуществлять регистрацию вводимых в строку адреса URL'ов не каким-то интегрированным внутрь FireFox'a плагином, а отдельно от браузера  функционирующей программой.
Как следует реализовывать такую задачу ?

В случае Internet Explorer'a, читал, что нужно задействовать COM-объекты...а здесь как ?

P.S. Интересно что имел ввиду Zaratustra под словами "передать уже запущенному приложению какую-нибудь информацию. В языках программирования, можно было использовать WinAPI и там все было просто."

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]