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

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

№5131-07-2008 19:20:41

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Anton

это не "из того же разряда"

Это почему это?
Твой пример проверяет, есть ли в списке вариантов поля со списком значение, которое мы хотим присвоить полю.
То, про что я писал - фактически оптимизация по времени того же самого действа в случае частых проверок (хотя конечно не могу гарантировать, что это будет быстрее - не проверял).
В обоих случаях результат получится одинаковый: либо оно там есть, либо нет.
Но вообще говоря положительный ответ не гарантирует успешности присваивания, так как в принципе между проверкой и присваиванием список может измениться.
Но наверное если такое и возможно, то пренебрежимо маловероятно...


---  ---

Отсутствует

 

№5231-07-2008 19:52:49

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

Re: Вопросы (и ответы) по разработке расширений

То, про что я писал - фактически оптимизация по времени того же самого действа в случае частых проверок

Неужели ?

Вообще, непонятно, зачем оптимизировать по времени доступ к menulist, но вариант с getElementsByAttribute не единственный, можешь попробовать хэш типа "значение":"индекс" или ещё что-нибудь, а насколько каждый вариант будет быстрым покажет только эксперимент.

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

Я уже думаю, и не только список. Даже уверен. Не пойму только, в чём проблема. Поставь проблему понятней.


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

Отсутствует

 

№5331-07-2008 20:08:30

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Anton

Поставь проблему понятней.

Ну так я вроде сразу и написал:

Forest  пишет

Если у устанавливаю value у поля со списком - могу я проконтролировать, что значение подошло?

Хотя наверное не очень понятно.
То есть речь о следующем:
Я установил значение поля со списком.
В процессе этого/сразу после этого или через какое-то время - могу я понять, что у меня там сейчас правильное значение не проверяя, принадлежит ли мое значение тому, что написано в value списка вариантов?
Мб исключение какое бросается?..
Или обработчик события туда можно повесить?..
Или единственный способ - варианты того как ты написал ?


---  ---

Отсутствует

 

№5431-07-2008 20:28:14

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

Re: Вопросы (и ответы) по разработке расширений

Ну так я вроде сразу и написал:

Ну и где там про оптимизацию по времени ?

Факт изменения value можешь проверять обработчиками onchange, oninput, onselect.
Проверка правильности "автоматом", afaik, не делается, кроме случая отсутствия атрибута editable.


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

Отсутствует

 

№5531-07-2008 21:37:23

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Про оптимизацию было сказано в сравнительном качестве.
В общем вопрос исчерпан, спасибо :)


---  ---

Отсутствует

 

№5602-08-2008 23:36:49

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Anton

то должно помочь
Код:
if (document. getElementById ("ml01"). getElementsByAttribute ("value", "xyz"). length) ...

Я правильно понимаю, что getElementsByAttribute работает только для XUL?
Мне просто надо все это делать для элементов html-страницы.


---  ---

Отсутствует

 

№5703-08-2008 09:16:45

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

Re: Вопросы (и ответы) по разработке расширений

Я правильно понимаю, что getElementsByAttribute работает только для XUL?

Нет, не правильно.

p.s. для html, насколько мне известно - собственная реализация (в т. ч. и getElementsByAttribute) через xpath, перебор или строчный поиск в innerHTML.

Отредактировано Anton (03-08-2008 10:11:26)


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

Отсутствует

 

№5803-08-2008 11:20:15

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Anton

Нет, не правильно.

p.s. для html, насколько мне известно - собственная реализация (в т. ч. и getElementsByAttribute) через xpath, перебор или строчный поиск в innerHTML.

Тогда почему у меня Лис (2-я версия) на вызов getElementsByAttribute говорит, что он не является методом?
То есть getElementById (точнее у меня getElementByName, но это по идее должно быть без разницы) выполняется, а вот на getElementsByAttribute такое говорится :(

Добавлено Sun Aug  3 11:47:58 2008 :
Опять же в DOM:element тоже отсутствует описание этого метода :(
Правда там написано

While these interfaces are generally shared by most HTML and XML elements, there are more specialized interfaces for particular objects listed in the DOM HTML Specification—for example the HTML Table Element and HTML Form Element interfaces.

Но думаю такой метод должен быть определен везде, так как он фактически позволяет выбирать элементы произвольного типа.


---  ---

Отсутствует

 

№5903-08-2008 11:55:14

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

Re: Вопросы (и ответы) по разработке расширений

Forest

Тогда почему у меня Лис (2-я версия) на вызов getElementsByAttribute говорит, что он не является методом?

Так ты же его, скорее всего, не определил. Напрямую он определён только в XUL. Если добавить код, типа

ml. getElementsByAttribute = function (attrName, attrValue) { ... }

то getElementsByAttribute будет работать и в xml и в html.
Я именно так и сказал.


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

Отсутствует

 

№6003-08-2008 11:59:11

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Anton

Выделить код

Код:

ml. getElementsByAttribute = function (attrName, attrValue) { ... }

Прямо так в коде и написать (включая ... в теле)?
А ml - это что? Или вместо него просто надо поставить переменную с объяктом от которого он будет вызываться?


---  ---

Отсутствует

 

№6103-08-2008 12:11:25

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

Re: Вопросы (и ответы) по разработке расширений

Прямо так в коде и написать (включая ... в теле)?
А ml - это что? Или вместо него просто надо поставить переменную с объяктом от которого он будет вызываться?

А сам-то как думаешь ? )


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

Отсутствует

 

№6203-08-2008 13:24:14

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Anton

А сам-то как думаешь ? )

То есть ты предлагаешь мне самому реализовать getElementsByAttribute?

Добавлено Sun Aug  3 13:26:36 2008 :
Если можно как-то шаблонным образом переносить реализацию с XUL на HTML - дай пожалуйста ссылку на описание как это делается.


---  ---

Отсутствует

 

№6303-08-2008 15:15:35

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

Re: Вопросы (и ответы) по разработке расширений

Если можно как-то шаблонным образом переносить реализацию с XUL на HTML - дай пожалуйста ссылку на описание как это делается.

Насколько мне известно - нельзя.


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

Отсутствует

 

№6403-08-2008 16:54:51

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Anton
Ну просто огромное спасибо за неоценимую помощь в лице двух примеров неработающего кода :(
Тогда тем более полемика на тему

Anton  пишет

это не "из того же разряда"

была совершенно пустой, так как я именно про реализацию этой фичи фактически и писал!
Только время потерял - давно бы уж сделал, если бы не мысль, что "возможно я плохо искал" :(


---  ---

Отсутствует

 

№6503-08-2008 17:50:57

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

Re: Вопросы (и ответы) по разработке расширений

Forest

Ну просто огромное спасибо за неоценимую помощь

Всегда пожалуйста. Надеюсь, мне удалось положительно повлиять на твой способ постановки вопросов...

в лице двух примеров неработающего кода

... хотя и не в полной мере. Что ж, на то они и примеры.


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

Отсутствует

 

№6603-08-2008 19:10:12

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Anton

Надеюсь, мне удалось положительно повлиять на твой способ постановки вопросов...

И не надейся!
Если не нравился вопрос - надо было так сразу и писать чем (кстати еще не поздно)!
А сейчас это больше похоже на оправдание.


---  ---

Отсутствует

 

№6703-08-2008 19:35:24

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

Re: Вопросы (и ответы) по разработке расширений

Forest

И не надейся!

Жаль.

Если не нравился вопрос - надо было так сразу и писать чем (кстати еще не поздно)!

Хорошо. Вопрос был такой:

Если у устанавливаю value у поля со списком - могу я проконтролировать, что значение подошло?
value то в любом случае меняется, а вот попал ли я в список значений?..
Или это только если достать этот список и по нему проверять каждое значение?

и я ответил: "...Если <menulist...".
Как скоро после этой пары вопрос-ответ выяснилось, что код требуется для html ? Вот это мне очень не понравилось. Перед этим точно так же вопрос об оптимизации был поставлен постфактум, когда я просил о более точной формулировке. Во второй уже раз решил - раз вопросы задаются неопределённо, ну я и отвечать буду в той же манере.


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

Отсутствует

 

№6803-08-2008 21:20:57

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Anton

Жаль.

Я умею учиться и критически отношусь к себе, но в данном случае считаю претензию необоснованной.

и я ответил: "...Если <menulist...".
Как скоро после этой пары вопрос-ответ выяснилось, что код требуется для html ?

1. Да, я забыл указать про html! Хотя у меня есть подозрение, что произошло нечто другое - я "забыл" про html потому, что знал про то, как это делается для XUL, и неосознанно счел это очевидным.
2. Я не сразу проверил все мне предложенное. Я вообще стараюсь избегать ситуаций, когда срочно нужен ответ. Я задал вопрос и стал делать другую часть, в которой знал как все делать.
Поэтому и свою оплошность я понял не сразу.
Однако прошу отметить, что:
а. Я поблагодарил за помощь
б. Я никому не предъявлял претензия за свою забывчивость
в. Я просто задал уточняющий вопрос
В контексте всего этого изменение линии поведения я принял как обиду на то, что помощь оказалась невостребованной (типа я тут стараюсь-пишу-помогаю, а всякие чайники не могут сразу вопрос поставить - вот не буду больше писать!).
Как мне в таких случаях в детстве говорила тетушка "На обиженных воду возят", за что ей огромное спасибо.

А теперь о том, чего не было:

Перед этим точно так же вопрос об оптимизации был поставлен постфактум

- вопрос об оптимизации не ставился!
Если в этом есть сомнения - рекомендую перечитать заново.
Хотя в первую очередь мы видим (в том числе и в тексте) то, что хотим увидеть.


---  ---

Отсутствует

 

№6903-08-2008 22:46:40

Shutnik
Участник
 
Группа: Extensions
Зарегистрирован: 12-11-2005
Сообщений: 3785
UA: Iceweasel 3.0

Re: Вопросы (и ответы) по разработке расширений

для html встроенного getElementsByAttribute нет.
пробуем в chrome и в обычном документе

Выделить код

Код:

alert("getElementsByAttribute" in window.document)

если уже действительно нужно, то можно сделать самому.

Отредактировано Shutnik (03-08-2008 22:47:05)

Отсутствует

 

№7004-08-2008 01:03:00

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Shutnik

alert("getElementsByAttribute" in window.document)

Как и ожидалось, false :(
В моем случае полная реализация такого метода не нужна - сделал простым перебором "option".
Но как делать в принципе понятно (рекурсией по всему древу ДОМа).
Спасибо за интересный способ определения наличия/отсутствия фич:)


---  ---

Отсутствует

 

№7126-08-2008 14:30:32

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Возникла задача - реализовать копирование (ctrl+c например) для контролов xul-а (конкретно это был листбокс).
Поискал инфу на эту тему, но нашел только про меню, да и то там как-то обойден стороной вопрос про реализацию самих обработчиков.
Попробовал сделать по-аналогии - не получилось.
Вот что пробовал:

Выделить код

Код:

...
  <keyset id="sidebarKeyset">
    <key id="copy_key" oncommand="CKGFF2_GetSelected(event);"
        modifiers="accel" key="C" />
  </keyset>
...
    <listbox id="CKGFF2-Current" flex="1" key="copy_key" />
...

Не смог получить в обработчике CKGFF2_GetSelected(event) контекст listbox-а - везде только keyset.
Другой вариант вообще не заработал (нажатия не ловил).

В принципе установкой обработчика в сам listbox проблема решается, но тогда приходится отслеживать то ли нажато.
А хотелось именно привязать обработчики к хоткеям и использовать при необходимости.
Или мое желание не соответствует идеологии разработки и работающий вариант - единственно верный, а keyset - только для меню?

Отредактировано Forest (26-08-2008 14:35:29)


---  ---

Отсутствует

 

№7226-08-2008 16:13:22

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

Re: Вопросы (и ответы) по разработке расширений

Пробуй event.explicitOriginalTarget


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

Отсутствует

 

№7327-08-2008 15:02:48

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Anton

Пробуй event.explicitOriginalTarget

Спасибо, помогло :)

Только вот я почитал доку на developer.mozilla.org и как-то не уверен, что это допустимый вариант использования (правда там вообще дока неполная).
И как оно вообще работает, когда таких хоткеев определяется много (десятки например)? Или справляется?


---  ---

Отсутствует

 

№7427-08-2008 22:04:01

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

Re: Вопросы (и ответы) по разработке расширений

или document. commandDispatcher. focusedElement


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

Отсутствует

 

№7501-09-2008 15:48:15

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Anton

или document. commandDispatcher. focusedElement

Да, это тоже должно подойти, спасибо :)

Добавлено Mon Sep  1 16:04:21 2008 :
Я правильно понимаю, что в АПИ Лиса нет работы с консолью?
Просто понадобилось  получить stdout консольного приложения, а ничего подходящего не нашел :(
Пришлось делать через перенаправление в файл.
Вот что получилось (нужна была только первая строка):

Выделить код

Код:

// временный файл создаем в папке tmp
    var tmpFile = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("TmpD", Components.interfaces.nsIFile);
    var tmpPath = tmpFile.path;
    tmpFile.append("TmpFile");
    var tmpFullPath = tmpFile.path;

// Запускаем наш скрипт с перенаправлением вывода во временный файл
    var runFile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
    runFile.initWithPath("c:\\script.bat");
    var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
    process.init(runFile);
    var args = [">", tmpFullPath];
    process.run(false, args, args.length);

// Получаем данные из временного файла
    var istream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
    istream.init(tmpFile, 0x01, 0444, 0);
    istream.QueryInterface(Components.interfaces.nsILineInputStream);
    
    var line = {}, hasmore;
    hasmore = istream.readLine(line);

Оно работает, но как-то кривовато выглядит :(
Опять же не получилось удалить этот временный файл:

Выделить код

Код:

tmpFile.remove(false)

не работает, а попытка работать с файлом через nsIFile (а не через nsILocalFile) успехом пока не увенчалась.

Вообще или я еще не до конца разобрался с этим, либо все таки АПИ работы с файловой системой у Лиса хромает?..

От ссылочки на правильную документацию про это/пример не отказался бы (особенно с удалением).
Инфу копал в основном на оффсайте, но мб недостаточно глубоко?..

Или нормально это все можно только через XPCOM сделать?

Отредактировано Forest (01-09-2008 16:05:07)


---  ---

Отсутствует

 

Board footer

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