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

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

№118-01-2006 14:46:13

Sarin2.0
Участник
 
Группа: Members
Зарегистрирован: 18-01-2006
Сообщений: 58

Как добраться до DOM загруженной страницы из расширения?

Только начал осваивать разработку расширений для FF.

Вот вопрос: как добраться до загруженной страницы? До её DOM. Конкретно надо будет прочитать, обработать и изменить textNode вложенный в некоторые элементы.

Отсутствует

 

№218-01-2006 16:41:09

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

Re: Как добраться до DOM загруженной страницы из расширения?

http://xpoint.ru/forums/programming/XUL/thread/33865.xhtml


Бди!

Отсутствует

 

№318-01-2006 17:49:42

Sarin2.0
Участник
 
Группа: Members
Зарегистрирован: 18-01-2006
Сообщений: 58

Re: Как добраться до DOM загруженной страницы из расширения?

Спасибо.

Возник ещё вопрос. Допустим в документе имеется форма. В форме поле ввода. Когда скрипт пишется для страницы там можно доступ к полю ввода получить примерно так: document.form[0].textarea[0]. Или по имени если оно известно.

Можноль как-то сделать так же из расширения?

Отсутствует

 

№418-01-2006 18:18:27

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

Re: Как добраться до DOM загруженной страницы из расширения?

Выделить код

Код:

var myExVar =
{
  getContent: function() {
    var cont = getBrowser().contentWindow;
    try {
      cont = new XPCNativeWrapper(cont).wrappedJSObject;
    } catch(e) { return 0}
    if (!cont) cont = getBrowser().contentWindow;
    return cont;
  },

  execute: function() {
    var doc = this.getContent().document;
    alert(doc.form[0]);//вот вам и форма
  }
}

myExVar.execute();

Бди!

Отсутствует

 

№518-01-2006 18:39:56

Sarin2.0
Участник
 
Группа: Members
Зарегистрирован: 18-01-2006
Сообщений: 58

Re: Как добраться до DOM загруженной страницы из расширения?

Чёт не хочет.

Отсутствует

 

№618-01-2006 18:51:09

Sarin2.0
Участник
 
Группа: Members
Зарегистрирован: 18-01-2006
Сообщений: 58

Re: Как добраться до DOM загруженной страницы из расширения?

Вообще где можно найти скольконибудь нормальное пособие по разработке расширений к FF на русском?

А то везде долго и нудно пишут про великий XUL, а потом вскользь упоминают, что осталось только написать код на JS. А сделать это не проблема. Надо только JS знать.

Отсутствует

 

№718-01-2006 19:17:40

igorsub
бедняжечка бедняжная
 
Группа: Extensions
Откуда: Мурманск
Зарегистрирован: 03-04-2005
Сообщений: 6373
Веб-сайт

Re: Как добраться до DOM загруженной страницы из расширения?

А то везде долго и нудно пишут про великий XUL, а потом вскользь упоминают, что осталось только написать код на JS. А сделать это не проблема. Надо только JS знать.

У меня такая же фигня. JS все испортил. :)


От оно че!

Отсутствует

 

№818-01-2006 20:55:07

Sarin2.0
Участник
 
Группа: Members
Зарегистрирован: 18-01-2006
Сообщений: 58

Re: Как добраться до DOM загруженной страницы из расширения?

igorsub пишет

А то везде долго и нудно пишут про великий XUL, а потом вскользь упоминают, что осталось только написать код на JS. А сделать это не проблема. Надо только JS знать.

У меня такая же фигня. JS все испортил. :)

Фишка в том, что знать язык чтоб писать на нём не достаточно. Что я расширения писать буду чтоб двойку с двойкой складывать?

Отсутствует

 

№918-01-2006 22:44:21

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

Re: Как добраться до DOM загруженной страницы из расширения?

Sarin2.0 пишет

Вообще где можно найти скольконибудь нормальное пособие по разработке расширений к FF на русском?
...

См. "прибитые" в этом разделе темы.

Вообще говоря, разработка js-кода расширений подобна разработке js-кода html-страниц. Разница лишь в структуре документа - js-код html-страницы получает доступ к элементам через document, а js-код расширения - через window. contentDocument (если для текущей вкладки).


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

Отсутствует

 

№1018-01-2006 22:46:40

Sarin2.0
Участник
 
Группа: Members
Зарегистрирован: 18-01-2006
Сообщений: 58

Re: Как добраться до DOM загруженной страницы из расширения?

Anton пишет
Sarin2.0 пишет

Вообще где можно найти скольконибудь нормальное пособие по разработке расширений к FF на русском?
...

См. "прибитые" в этом разделе темы.

Вообще говоря, разработка js-кода расширений подобна разработке js-кода html-страниц. Разница лишь в структуре документа - js-код html-страницы получает доступ к элементам через document, а js-код расширения - через window. contentDocument (если для текущей вкладки).

И это всё? Я JS знаю неплохо. С DOM работал.

Отсутствует

 

№1118-01-2006 23:02:53

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

Re: Как добраться до DOM загруженной страницы из расширения?

Sarin2.0 пишет

...
И это всё?...

А что ещё нужно ? Ведь

...Я JS знаю неплохо. С DOM работал.

Тем более, как говорится "карты в руки". Получаешь контент (window. content или window. contentDocument или как там ещё, не помню) и с помощью DOM API находишь нужную форму, в ней - нужный textarea и работаешь с ним.
Подробней о доступе к контенту посмотри здесь: http://xpoint.ru/forums/programming/XUL … 3865.xhtml


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

Отсутствует

 

№1218-01-2006 23:13:16

Sarin2.0
Участник
 
Группа: Members
Зарегистрирован: 18-01-2006
Сообщений: 58

Re: Как добраться до DOM загруженной страницы из расширения?

Через DOM косячит. TextNode добавляется. Но вот работать с этим текстом тяжело. Как оказалось текст введённый пользователем не является TextNode, а через getAttribute('value') не получаетца.

Отсутствует

 

№1318-01-2006 23:22:44

Коля Дубр
Участник
 
Группа: Members
Откуда: Москва
Зарегистрирован: 25-03-2005
Сообщений: 31
Веб-сайт

Re: Как добраться до DOM загруженной страницы из расширения?

Sarin2.0, я по началу тоже перепугался =) На самом деле все действительно просто. Как разбирался я:

1. Прочитал вот эту статью и сделал перевод. Перевод можно заменить трехкратным прочтением =) Основы в голове улеглись.

2. Прочитал ветку про XUL на xpoint. С самого начала. Там описаны решения всех новичковых проблем. Берем на заметку.

3. Проглядываем http://xulplanet.com/ на предмет "что там вообще есть". Начинаем что-то писать. Когда возникают технические вопросы - лезем на xulplanet и находим решение =) Еще полезно держать под рукой шпаргалку по XUL - благо она русскоязычная и там почти все есть. Поскольку периодически приходится перегружать chrome, лучше сразу открыть все маны и доки в опере =)

4. Мне лично очень помогает. Если нифига не получается, идем на xpoint задавать вопрос (помня, что люди там серьезные и дергать их по пустякам не стоит). Выкуриваем сигаретку и начинаем формулировать, в чем наша проблема. Подробно, со всеми нюансами. Обычно через 5 минут удается найти решение, т.к. правильно сформулированный вопрос содержит половину ответа =)

5. Advanced. Достаем куда-нибудь содержимое архива C:\Program Files\Mozilla Firefox\chrome\browser.jar, особенно нас интересует папка browser. В ней лежит весь интерфейс, который мы переопределяем. Очень полезно его изучить.

6. Самый простой способ внедрить какую-то фичу - вспомнить расширение, где реализованно что-то подобное. Распаковать и посмотреть, как это сделано.

разработка js-кода расширений подобна разработке js-кода html-страниц

Готов согласиться с этим утверждением.

Отсутствует

 

№1418-01-2006 23:24:08

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

Re: Как добраться до DOM загруженной страницы из расширения?

Sarin2.0 пишет

Через DOM косячит. TextNode добавляется...

Это не "косячит". Это значит textnode там действительно есть. Это значит что код страницы отформатирован примерно так:

Выделить код

Код:

<tag1>
    <tag2>
    ...
    </tag2>
</tag1>

Если бы он был написан так:

Выделить код

Код:

<tag1><tag2>...</tag2></tag1>

то не было бы никаких textnode.

...Но вот работать с этим текстом тяжело. Как оказалось текст введённый пользователем не является TextNode, а через getAttribute('value') не получаетца.

В смысле ? У textnode нет атрибута value ?


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

Отсутствует

 

№1518-01-2006 23:31:34

Sarin2.0
Участник
 
Группа: Members
Зарегистрирован: 18-01-2006
Сообщений: 58

Re: Как добраться до DOM загруженной страницы из расширения?

Знаю. Я не про тектноде. Есть текстарея. Надо до неё добраться. Я говорил про свойство value этой тектареи. То самое, с которым можно через JS работать без всяких DOMов. Так вот нету его:)

Отсутствует

 

№1618-01-2006 23:42:05

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

Re: Как добраться до DOM загруженной страницы из расширения?

Sarin2.0 пишет

...Я говорил про свойство value этой тектареи. То самое, с которым можно через JS работать без всяких DOMов. Так вот нету его:)

А и точно нету :) Попробуй так: element. value, где element - найденный textarea.


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

Отсутствует

 

№1718-01-2006 23:43:36

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

Re: Как добраться до DOM загруженной страницы из расширения?

ps: вот мой код, "заточенный" для формы ответа этого форума:

Выделить код

Код:

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 x = getContent ();
var f = x. getElementById ("post");
var i = f. getElementsByTagName ("textarea");
for (var j = 0; j < i. length; j++)
if (i [j]. name == "req_message")
print (i [j]. value);

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

Отсутствует

 

№1818-01-2006 23:50:51

Sarin2.0
Участник
 
Группа: Members
Зарегистрирован: 18-01-2006
Сообщений: 58

Re: Как добраться до DOM загруженной страницы из расширения?

Anton пишет
Sarin2.0 пишет

...Я говорил про свойство value этой тектареи. То самое, с которым можно через JS работать без всяких DOMов. Так вот нету его:)

А и точно нету :) Попробуй так: element. value, где element - найденный textarea.

Феноменально. Работает. Но ведь не должно!

В любом случае я тестил на простом ХТМЛе. Свой тулбар я поломал и чинить его долго (см. соседний топик про манифест:))

Вот что работает:

Выделить код

Код:

<script>
function f(){
  alert(document.getElementById('txt'));
  text = document.createTextNode('Yo');
  document.getElementById('txt').appendChild(text);
}

function f2(){

  alert(document.getElementById('txt').value);
}
</script>
<textarea id="txt">
</textarea>

<input type="button" onclick="f();" value="123"><input type="button" onclick="f2();" value="321">

Отсутствует

 

Board footer

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