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

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№128-11-2010 16:18:05

NerV
Участник
 
Группа: Members
Откуда: Москва
Зарегистрирован: 28-11-2010
Сообщений: 2
UA: Firefox 3.6

Скрипт GreaseMonkey: элементы формы

Здаравствуйте, пишу скрипт для GreaseMonkey, что-то наподобие телефонной книги. В сам скрипте создаётся DIV, внутри которого имеются 2 формы. Внутри каждой формы таблица, в которой и разбиты элементы. DIV создаётся при помощи .appendChild, содержание уже как innerHTML.  После создания DIVа указатели на формы при помощи .getElementById заносятся в переменные класса. Всем элементам форм присвоены аттрибуты name. На кнопки формы навешаны обработчики при помощи .addEventListener, так же являются методами класса. Проблема в следующем: при клике на кнопку, вызывается нужный обработчик, в котором необходимо обратится к полям формы, но при попытке ипользовать конструкцию FormVar.ElementName или  FormVar.elements["ElementName"] элемент undefined. Если же обратится как FormVar.elements[ElementIndex], то всё в порядке. Есть ли какой-либо другой выход, так как обращение по индексу мне не подходит, а использовать .getElementById на все элементы формы не хотелось бы. Зарание спасибо. Ниже приведена часть скрипта относящаяся к проблеме.

Выделить код

Код:

var SMSSenderWindow = {
    MainWindow: null,
    fForm: null,
    fPhonebook: null,

    ...

    CreateWindow: function ()
    {
        var fWindow = document.createElement("DIV");
        fWindow.id = "SMSSenderWindow";
        fWindow.innerHTML = ""

        ...

        + "<form id='SMSSenderPhonebookForm' name='SMSSenderPhonebookForm'>"
        + "    <table id='SMSPhonebookTable' class='smsTable' style='display: none;'>"

        ...

        + "        <tr id='SMSPBDetailBox' style='display: none;'>"
        + "            <td style='border-bottom: 2px #000000 solid;'>"
        + "                Name: "
        + "                <input type='text' id='SMSPBPDetailName' name='PhonebookName'>"
        + "                <br>"
        + "                Operators: "
        + "                <select id='SMSPBDetailOperators'>"
        +                         OperatorsSelect
        + "                </select>"
        + "                Phone: +7"
        + "                <input type='text' id='SMSPBDetailPhoneCode' maxlength='3' name='PhonebookPhoneCode'>"
        + "                <input type='text' id='SMSPBDetailPhoneNumber' name='PhonebookPhoneNumber'>"
        + "                <br>"
        + "                <center>"
        + "                    <input type='button' class='smsPBButtonsDetailBox' id='SMSPBDetailOK' value='OK'>"
        + "                    <input type='button' class='smsPBButtonsDetailBox' id='SMSPBDetailCancel' value='Cancel'>"
        + "                <center>"
        + "            </td>"
        + "        </tr>"

        ...

        + "    </table>"
        + "</form>";

        this.MainWindow = document.body.appendChild(fWindow);
        this.fSend = document.getElementById('SMSSenderSendForm');
        this.fPhonebook = document.getElementById('SMSSenderPhonebookForm');

        ...

        document.getElementById('SMSPBDetailOK').addEventListener('click', this.OnPhonebookDetailOk, false);
        document.getElementById('SMSPBDetailCancel').addEventListener('click', this.OnPhonebookDetailCancel, false);;
    },

    ...

    OnPhonebookDetailOk: function ()
    {
        ...
        // Вот в таких обращениях получаю undefined элемента формы
        AbonentUnit.Name = SMSSenderWindow.fPhonebook.PhonebookName.value;
        AbonentUnit.PhoneCode = SMSSenderWindow.fPhonebook.PhonebookPhoneCode.value;
        AbonentUnit.PhoneNumber = SMSSenderWindow.fPhonebook.PhonebookPhoneNumber.value;
        ...
    },

    ...
};

Отредактировано NerV (28-11-2010 16:44:27)

Отсутствует

 

№228-11-2010 19:50:04

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.6

Re: Скрипт GreaseMonkey: элементы формы


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№329-11-2010 10:48:23

NerV
Участник
 
Группа: Members
Откуда: Москва
Зарегистрирован: 28-11-2010
Сообщений: 2
UA: Firefox 3.6

Re: Скрипт GreaseMonkey: элементы формы

Я подозревал что дело в этой обёртке, спасибо за помощь.

Отредактировано NerV (29-11-2010 10:50:53)

Отсутствует

 

№423-03-2011 12:23:31

ksbe
Участник
 
Группа: Members
Зарегистрирован: 23-03-2011
Сообщений: 2
UA: Firefox 3.6

Re: Скрипт GreaseMonkey: элементы формы

извините, если пишу не туда... Можете сказать можно ли в greasemonkey сделать скрипт который бы нажымал бы ссылку на оприделенной стоанице... и как можно это сделать???? за ранее спасибо!!!

Отсутствует

 

№523-03-2011 13:52:04

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 4.0

Re: Скрипт GreaseMonkey: элементы формы

ksbe
Посмотрите здесь - обсуждался схожий вопрос. Возможно, удастся обойтись без всяких скриптов - тем же iMacros, например.

Отсутствует

 

Board footer

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