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

Юристы зарабатывают огромные деньги и славу, оперируя хорошим знанием законов. Правила форума — простой путь к успешному общению.

№115-03-2006 21:35:18

bunker6
Участник
 
Группа: Members
Откуда: Санкт-Петербург
Зарегистрирован: 14-10-2005
Сообщений: 6
Веб-сайт

заместить оригинальный элемент формы своим

Экстеншн для thunderbird. В messengercompose хочу, чтобы вместо label для поля subject была моя кнопка. Как сделать такой оверлей? И каков вообще алгоритм решения таких проблем? Как узнавать название того обьекта, в который я хочу втроить что-то свое? Лезть в исходники, или есть какой-то «культурный» способ?

Отредактировано bunker6 (15-03-2006 21:39:36)

Отсутствует

 

№216-03-2006 15:58:43

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

Re: заместить оригинальный элемент формы своим

bunker6 пишет

Экстеншн для thunderbird. В messengercompose хочу, чтобы вместо label для поля subject была моя кнопка. Как сделать такой оверлей?...

вроде бы так:

Выделить код

Код:

<overlay id="...">
...
    <button id="..." removeelement="id_заменяемого элемента" .../>
...
</overlay>

...Как узнавать название того обьекта, в который я хочу втроить что-то свое? Лезть в исходники, или есть какой-то «культурный» способ?

Для Thunderbird тоже есть DOM Inspector: https://addons.mozilla.org/extensions/m … 10&id=1806


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

Отсутствует

 

№317-03-2006 19:51:03

bunker6
Участник
 
Группа: Members
Откуда: Санкт-Петербург
Зарегистрирован: 14-10-2005
Сообщений: 6
Веб-сайт

Re: заместить оригинальный элемент формы своим

Спасибо, особенно за DOM. =)
А что делать в том случае, если у конкретного элемента не прописан id? К нему же можно как-то обратиться (скриптом)? В моем случае это:

Выделить код

Код:

<hbox align="center">
            <label value="&subject.label;" accesskey="&subject.accesskey;" control="msgSubject"/>
            <textbox id="msgSubject" flex="1" class="toolbar" disableonsend="true"
                     oninput="gContentChanged=true;SetComposeWindowTitle();"
                     onkeypress="subjectKeyPress(event);" />
          </hbox>

Отсутствует

 

№417-03-2006 20:35:48

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

Re: заместить оригинальный элемент формы своим

bunker6 пишет

...если у конкретного элемента не прописан id?...

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

Выделить код

Код:

var b = document. createElement ("button");
b. setAttribute ("label", "...");
...
var l = document. getElementsByAttribute ("control", "msgSubject") [0];
var p = l. parentNode;
p. insertBefore (b, l);
p. removeChild (l);

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

Отсутствует

 

№520-03-2006 16:03:45

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

Re: заместить оригинальный элемент формы своим

немного похожая задача.
в thunderbird в addressbook хочется добавить кнопку напротив каждого телефона.
не очень понятно, как управлять их видимостью, т.к. неясно как приделать event handler к смене текущей карточке.

overlay xul:

Выделить код

Код:

<overlay>
  <vbox id="cvbPhone">
    <description class="CardViewText" id="cvPhWork" removeelement="true" />
    <description class="CardViewText" id="cvPhHome" removeelement="true" />
    <description class="CardViewText" id="cvPhFax" removeelement="true" />
    <description class="CardViewText" id="cvPhCellular" removeelement="true" />
    <description class="CardViewText" id="cvPhPager" removeelement="true" />

    <vbox id="my_id">
      <hbox align="center">
        <vbox flex="1">
          <description class="CardViewText" id="cvPhWork" />
        </vbox>
        <vbox pack="end">
          <button id="cvPhWork-button"
                  label="call"
                  oncommand="callCall( 'cvPhWork' );"
          />
        </vbox>
      </hbox>
      <hbox align="center">
        <vbox flex="1">
          <description class="CardViewText" id="cvPhHome" />
        </vbox>
        <vbox pack="end">
          <button id="cvPhHome-button"
                  label="call"
                  oncommand="callCall( 'cvPhHome' );"
          />
        </vbox>
      </hbox>
      <hbox align="center">
        <vbox flex="1">
          <description class="CardViewText" id="cvPhFax" />
        </vbox>
        <vbox pack="end">
          <button id="cvPhFax-button"
                  label="call"
                  oncommand="callCall( 'cvPhFax' );"
          />
        </vbox>
      </hbox>
      <hbox align="center">
        <vbox flex="1">
          <description class="CardViewText" id="cvPhCellular" />
        </vbox>
        <vbox pack="end">
          <button id="cvPhCellular-button"
                  label="call"
                  oncommand="callCall( 'cvPhCellular' );"
          />
        </vbox>
      </hbox>
      <hbox align="center">
        <vbox flex="1">
          <description class="CardViewText" id="cvPhPager" />
        </vbox>
        <vbox pack="end">
          <button id="cvPhPager-button"
                  label="call"
                  oncommand="callCall( 'cvPhPager' );"
          />
        </vbox>
      </hbox>
    </vbox>
  </vbox>
</overlay>

Отредактировано mojo (20-03-2006 16:04:27)

Отсутствует

 

№621-03-2006 12:48:26

bunker6
Участник
 
Группа: Members
Откуда: Санкт-Петербург
Зарегистрирован: 14-10-2005
Сообщений: 6
Веб-сайт

Re: заместить оригинальный элемент формы своим

встроить в оверлей родительского окна элемента обработчик onload

Все получается, только вот тут бы еще чуток поподробней. :)

Спасибо, уже не надо. Протупил.

window.addEventListener("load", my_function(), false);

Отредактировано bunker6 (21-03-2006 12:56:13)

Отсутствует

 

Board footer

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