Страницы: 1
Только начал осваивать разработку расширений для FF.
Вот вопрос: как добраться до загруженной страницы? До её DOM. Конкретно надо будет прочитать, обработать и изменить textNode вложенный в некоторые элементы.
Отсутствует
Спасибо.
Возник ещё вопрос. Допустим в документе имеется форма. В форме поле ввода. Когда скрипт пишется для страницы там можно доступ к полю ввода получить примерно так: document.form[0].textarea[0]. Или по имени если оно известно.
Можноль как-то сделать так же из расширения?
Отсутствует
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();
Бди!
Отсутствует
Вообще где можно найти скольконибудь нормальное пособие по разработке расширений к FF на русском?
А то везде долго и нудно пишут про великий XUL, а потом вскользь упоминают, что осталось только написать код на JS. А сделать это не проблема. Надо только JS знать.
Отсутствует
А то везде долго и нудно пишут про великий XUL, а потом вскользь упоминают, что осталось только написать код на JS. А сделать это не проблема. Надо только JS знать.
У меня такая же фигня. JS все испортил.
От оно че!
Отсутствует
А то везде долго и нудно пишут про великий XUL, а потом вскользь упоминают, что осталось только написать код на JS. А сделать это не проблема. Надо только JS знать.
У меня такая же фигня. JS все испортил.
Фишка в том, что знать язык чтоб писать на нём не достаточно. Что я расширения писать буду чтоб двойку с двойкой складывать?
Отсутствует
Вообще где можно найти скольконибудь нормальное пособие по разработке расширений к FF на русском?
...
См. "прибитые" в этом разделе темы.
Вообще говоря, разработка js-кода расширений подобна разработке js-кода html-страниц. Разница лишь в структуре документа - js-код html-страницы получает доступ к элементам через document, а js-код расширения - через window. contentDocument (если для текущей вкладки).
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Sarin2.0 пишетВообще где можно найти скольконибудь нормальное пособие по разработке расширений к FF на русском?
...См. "прибитые" в этом разделе темы.
Вообще говоря, разработка js-кода расширений подобна разработке js-кода html-страниц. Разница лишь в структуре документа - js-код html-страницы получает доступ к элементам через document, а js-код расширения - через window. contentDocument (если для текущей вкладки).
И это всё? Я JS знаю неплохо. С DOM работал.
Отсутствует
...
И это всё?...
А что ещё нужно ? Ведь
...Я JS знаю неплохо. С DOM работал.
Тем более, как говорится "карты в руки". Получаешь контент (window. content или window. contentDocument или как там ещё, не помню) и с помощью DOM API находишь нужную форму, в ней - нужный textarea и работаешь с ним.
Подробней о доступе к контенту посмотри здесь: http://xpoint.ru/forums/programming/XUL … 3865.xhtml
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Через DOM косячит. TextNode добавляется. Но вот работать с этим текстом тяжело. Как оказалось текст введённый пользователем не является TextNode, а через getAttribute('value') не получаетца.
Отсутствует
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-страниц
Готов согласиться с этим утверждением.
Отсутствует
Через DOM косячит. TextNode добавляется...
Это не "косячит". Это значит textnode там действительно есть. Это значит что код страницы отформатирован примерно так:
Если бы он был написан так:
то не было бы никаких textnode.
...Но вот работать с этим текстом тяжело. Как оказалось текст введённый пользователем не является TextNode, а через getAttribute('value') не получаетца.
В смысле ? У textnode нет атрибута value ?
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Знаю. Я не про тектноде. Есть текстарея. Надо до неё добраться. Я говорил про свойство value этой тектареи. То самое, с которым можно через JS работать без всяких DOMов. Так вот нету его
Отсутствует
...Я говорил про свойство value этой тектареи. То самое, с которым можно через JS работать без всяких DOMов. Так вот нету его
А и точно нету Попробуй так: element. value, где element - найденный textarea.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
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ентов на части порвет !!!
Отсутствует
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">
Отсутствует
Страницы: 1