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

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№109-02-2006 16:10:37

boroda
Участник
 
Группа: Members
Откуда: Киев
Зарегистрирован: 13-04-2005
Сообщений: 77

Перехват события onClick

Ну в общем, загружена страница somepage.htm:

Выделить код

Код:

<HTML>
 <HEAD>
 </HEAD>
   <BODY>
   <form name="form1" action="http://localhost:8080/test.jsp" method="POST">
     <input type="text" name="sometext"><br>
     <input type="button" name="push" value="OK"><br>
   </form>
   </BODY>
</HTML>

Как мне в расширении отловить событие onClick на странице somepage.htm?
Спасибо.

Отсутствует

 

№209-02-2006 16:18:27

RcT
Участник
 
Группа: Members
Откуда: Moscow-Ryazan
Зарегистрирован: 19-04-2005
Сообщений: 593
Веб-сайт

Re: Перехват события onClick

boroda

отловить событие onClick

событие чего, нажатия на кнопку? А зачем, дальше что необходимо сделать


Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20061204 GranParadiso/3.0a1

Отсутствует

 

№309-02-2006 18:36:41

beotiger
Участник
 
Группа: Members
Откуда: Царицын град
Зарегистрирован: 25-01-2006
Сообщений: 148
Веб-сайт

Re: Перехват события onClick

как мне в расширении отловить событие onClick на странице somepage.htm?

Ты мешаешь HTML и XUL файлы. Чтобы сделать формочку для расширения, с отловом всех событий, надо писать помесь XUL и JS файлов (или засунуть всё в однин, но мазиловцы этого не рекомендуют).


Храни ясность ума. Моего.

Отсутствует

 

№410-02-2006 07:15:43

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

Re: Перехват события onClick

Если не отлавливается событие 'click', то уж 'mbuttondown' точно должно.


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

Отсутствует

 

№510-02-2006 15:58:49

boroda
Участник
 
Группа: Members
Откуда: Киев
Зарегистрирован: 13-04-2005
Сообщений: 77

Re: Перехват события onClick

RcT пишет

boroda

отловить событие onClick

событие чего, нажатия на кнопку? А зачем, дальше что необходимо сделать

да, я хочу отловить событие onClick при нажатии на кнопку push на странице somepage.htm
Т.е. при нажатии на эту кнопку я к примеру хочу чтобы мое расширение записывало строку "cheked" в текстовый файл.

Отредактировано boroda (10-02-2006 16:57:31)

Отсутствует

 

№610-02-2006 16:55:30

boroda
Участник
 
Группа: Members
Откуда: Киев
Зарегистрирован: 13-04-2005
Сообщений: 77

Re: Перехват события onClick

Anton пишет

Если не отлавливается событие 'click', то уж 'mbuttondown' точно должно.

Anton
Я имел ввиду событие onClick, т.е. нажатие кнопки на странице somepage.htm, а не нажатие кнопки мыши.

А вообще как я могу добраться к элементу страницы из расширения
пробовал

Выделить код

Код:

window._content.document.form[0].action

и

Выделить код

Код:

window._content.document.form1.action

на выходе ошибка

Выделить код

Код:

Error: window._content.document.form has no properties
Source File: chrome://test/content/execute_test.js
Line: 28

У меня ФФ 1.0.6

Отсутствует

 

№710-02-2006 22:33:06

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

Re: Перехват события onClick

boroda пишет

...
Я имел ввиду событие onClick,...

Я то же самое имел в виду. Добавь в окно обработчик onclick:

Выделить код

Код:

window. addEventListener ("click", clickHandler, true);

Этот обработчик отработает первым.

...
А вообще как я могу добраться к элементу страницы из расширения
пробовал

Выделить код

Код:

window._content.document.form[0].action

и

Выделить код

Код:

window._content.document.form1.action

на выходе ошибка

Выделить код

Код:

Error: window._content.document.form has no properties
Source File: chrome://test/content/execute_test.js
Line: 28

У меня ФФ 1.0.6

Выделить код

Код:

function getTopWin ()
{
    var windowManager = Components. classes ['@mozilla.org/appshell/window-mediator;1']. getService();
    var windowManagerInterface = windowManager.
                                 QueryInterface (Components. interfaces. nsIWindowMediator);
    var topWindowOfType = windowManagerInterface. getMostRecentWindow ("navigator:browser");
    
    if (topWindowOfType)
    {
        return topWindowOfType;
    }
    return null;
}
function getContent ()
{
    var cont = getTopWin (). getBrowser (). contentDocument;
    var c2 = cont;
    try
    {
        cont = new XPCNativeWrapper (cont). wrappedJSObject;
    } catch(e) {}
    if (!cont)
        cont = c2;
    return cont;
}
var c = getContent ();

Теперь можно искать нужный элемент:

Выделить код

Код:

var forms = c. getElementsByTagName ("form");
for (var i = 0; i < forms. length; i++)
    if (forms [i]. getAttribute ("name") == "...")
        ...

Отредактировано Anton (10-02-2006 22:34:37)


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

Отсутствует

 

№813-02-2006 17:20:57

boroda
Участник
 
Группа: Members
Откуда: Киев
Зарегистрирован: 13-04-2005
Сообщений: 77

Re: Перехват события onClick

Спасибо Вам Anton
научился добираться к элементу формы на странице. Но у меня возникла еще одна проблема
с обработчиком

Выделить код

Код:

window. addEventListener ("click", clickHandler, true);

Он срабатывает при нажатии кнопки в любой области окна ФФ. А мне надо чтобы он срабатывал только при нажатии на кнопку push на странице somepage.htm.

Не подскажите что делать? Кто-нибудь:) Заранее спасибо

Отредактировано boroda (13-02-2006 17:22:17)

Отсутствует

 

№913-02-2006 18:07:03

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

Re: Перехват события onClick

boroda пишет

...мне надо чтобы он срабатывал только при нажатии на кнопку push на странице somepage.htm...

1. Если текущая вкладка содержит somepage.htm, то

Выделить код

Код:

window._content.location.href="...somepage.htm"

2. Если в окне имеется обработчик события click с аргументом event и происходит нажатие на кнопку

Выделить код

Код:

<input type="button" name="push" value="OK">

то

Выделить код

Код:

event.target="input" // или "html:input"

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

Отсутствует

 

№1013-02-2006 19:25:34

boroda
Участник
 
Группа: Members
Откуда: Киев
Зарегистрирован: 13-04-2005
Сообщений: 77

Re: Перехват события onClick

Извините Anton, но башка моя совсем отказывается соображать. Я не очень  понял ваше сообщение.
У меня есть страница somepage.htm, она описана в моем первом сообщении.
Так же у меня есть расширение, которое должно срабатывать при нажатии на кнопку Push, на странице somepage.htm

Выделить код

Код:

window.addEventListener ("click", clickHandler, true);
function clickHandler(event)
{
   Не понимаю что должно быть здесь:(
}

Также не понимаю

Выделить код

Код:

Если в окне имеется обработчик события click с аргументом event и происходит нажатие на кнопку
Код:

<input type="button" name="push" value="OK">

то
Код:

event.target="input" // или "html:input"

Причем тут event.target="input", если event.target возвращает object XULElement
Сильно только не ругайтесь :)

Отредактировано boroda (13-02-2006 19:26:23)

Отсутствует

 

№1113-02-2006 19:38:32

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

Re: Перехват события onClick

Я ошибся, не event.target, а event.target.nodeName.

Выделить код

Код:

window.addEventListener ("click", clickHandler, true);
function clickHandler(event)
{
   if ((window._content.location.href == "адрес страницы somepage.htm") &&
       (event.target.nodeName=="input"))
   {
      // делаем нужное
   }
}

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

Отсутствует

 

№1214-02-2006 12:06:10

boroda
Участник
 
Группа: Members
Откуда: Киев
Зарегистрирован: 13-04-2005
Сообщений: 77

Re: Перехват события onClick

Спасибо Anton
Все работает, но остался последний вопрос.

При нажатии на текстовое поле

Выделить код

Код:

<input type="text" name="sometext">

event.target.nodeName==INPUT

но когда я нажимаю на кнопку

Выделить код

Код:

<input type="button" name="push" value="OK">

,

то event.target.nodeName==tabbrowser

Почему так?

Отсутствует

 

№1314-02-2006 12:27:52

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

Re: Перехват события onClick

boroda пишет

...

Почему так?

Я, честно говоря, не знаю. Но знаю, как решить. Вот так:

Выделить код

Код:

...
if (event. originalTarget. nodeName == "INPUT")
...

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

Отсутствует

 

№1414-02-2006 13:59:37

boroda
Участник
 
Группа: Members
Откуда: Киев
Зарегистрирован: 13-04-2005
Сообщений: 77

Re: Перехват события onClick

Спасибо за помощь. С меня пиво :)

Отсутствует

 

Board footer

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