А как узнать куда пользователь правой кнопкой нажал?
UPD document.popupNode
Snipe, метод scrollTo(
x
,
y
);
alert($('wearherIfr').scrollTo); выдает undefined
И снова здравствуйте.
У меня в аддоне есть погода. При нажатии хочу, чтоб появлялось окошко с погодой на несколько дней вперед. Решил сделать это через iframe, примерно так:
<menupopup id="wearherMenu" style="padding:-50px;"> <iframe id="wearherIfr" src="http://" type="content" style="overflow:hidden;width:400px;height:200px;padding-left:-50px;"/> </menupopup> wBlock.setAttribute('popup', 'wearherMenu');
Можно как-то документ в ifram'e прокрутить на нужный кусок документа?
Snipe
Возможно как-то из одного окна браузера получить доступ к JavaSctipt'у расширения другого окна?
Возможно. Способов реализации несколько:
1. nsIWindowMediator. getMostRecentWindow (...) / nsIWindowWatcher. getWindowByName (...) или
2. nsIObserverService. notifyObservers (...) или
3. собственная компонента для взаимодействия между скриптами, работающими в разных окнахКакой выбрать лучше - зависит от задачи.
Спасибо, второй вариант отлично подошел.
…Возможно как-то из одного окна браузера получить доступ к JavaSctipt'у расширения другого окна?
Окна вообще никак не связаны, просто браузер два раза открыт.
Там же вроде есть нужный код, на процитированной странице ?
Разобрался, спасибо. %)
Теперь опять к настройкам.
Сделал настройки через меню всех аддонов.
И по сохранению мне надо обновить данные в аддоне.
В настройках вызываю функцию обновления через window.opener.opener., т.е. как раз попадаю в "окно" с аддоном, и эта функция обновляет мне всё что нужно.
Но работает так, только если настройки были открыты через меню, если как-то еще - обновление не происходит. Потому что opener = null.
Можно как-то получить доступ к функции обновления (т.е. к основному окну браузера из окна настроек) не через window.opener?
Смотреть надо в сторону https://developer.mozilla.org/En/DOM/Document.styleSheets, я думаю.
Вот код, который собирает все правила из первого stylesheet текущего документа:
...
Где-то среди cssRules. item (j) возможно, найдётся и "А{...}".
Спасибо, попробую так.
Еще вопрос, ставлю куки примерно так:
var ios = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService); var cookieUri = ios.newURI("http://.mysite.com", null, null); var cookieSvc = Components.classes["@mozilla.org/cookieService;1"].getService(Components.interfaces.nsICookieService); cookieSvc.setCookieString(cookieUri, null, "your_key=your_value;", null);
И на сайте ставлю куки (.mysite.com).
В итоге получается, две разные куки:
с сайта: "домен: .mysite.com"
с расширения: "узел: mysite.com"
Все что нашел на MDC:
If you do not explicitly specify a domain in the cookieString then the domain will be derived from the cookieUr
…
можно, перебирайте свойство (не атрибут) style нужного объекта
window.getComputedStyle
Получается немного не то:
1. Если стили прописаны, но на странице нет ссылки - не смогу узнать.
2. Если стили прописаны для всех ссылок отдельно, а для классов (например меню) отдельно. Придется все это отсеивать.
Если совсем точно, мне нужно узнать, есть ли где-нибудь в CSS строчка А{...}
Как, например FireBug показывает?
Можно как-то узнать, есть ли на данном сайте стили на определенный тег?
Т.е. где-нибудь в CSS написано .a {color:red;text-decoration:none} и т.п.
Можно как-то силами расширения узнать, что на данном сайте у тегов "а" есть прописанный стиль?
А как сделать настройки для расширения через кнопку "настройки", которая показывается под каждым расширением в списке расширений?
Спасибо огромное, то что надо. Читал эту статью давным давно - пропустил и забыл этот пункт. :(
А у меня вот такой вопрос еще назрел.
Я на странице определенного сайта с помощью расширения добавляю ссылки, через DOM.
Можно как-то к этим ссылкам сделать всплывающие подсказки?
Title и tooltextbar не работают. :/
Спасибо, то что надо.
А как сделать настройки для расширения через кнопку "настройки", которая показывается под каждым расширением в списке расширений?
Условно говоря XUL-страница под настройки у меня уже есть, но я ее запускаю с интерфейса самого расширения. Не хочу чтоб кнопка под настройки место занимала.
В общем у меня все что возможно стоит в кодировке UTF-8.
Текст с сервера тоже приходит в кодировке UTF-8.
Это текст расширение сохраняет в файл, чтоб каждый раз не дергать сервер.
Но сохраняется русский текст непонятно как:
+
18BC@85=B
2AB@0;8O
2B><8@
=B828@CA =B8A?0<
Что делать? М.б. есть уже такая тема, но я не смог найти - буду благодарен за ссылку.
Можно как-то через event, по событию load для нового таба получить document этого таба?
Когда загружаемый таб открыт поверх остальных - все просто:
var doc = getBrowser().contentDocument;
Но мне надо получить содержимое таба, который не текущий. Например как после нажатия колесом мышки на ссылку.
Всем привет.
Сделал в аддоне поиск слова на странице и его выделение через nsIFind.
Но когда использую .Find() - можно ввести только одно слово.
Можно как-то сделать такой поиск не по одному слову, а по нескольким сразу? М.б. через RegExp или еще как-то?
А можно как-то после установки расширения и соответственно поискового плагина с разрешения пользователя ставить плагин по умолчанию?
Как всегда, уверенное нет - тоже хороший ответ.
Если внутри расширения сделать директорию /searchplugins и положить туда поисковик, думаю, будет работать (сам не пробовал). Application-specific Extension Files
Спасибо, работает.
Совсем нубский вопрос.
Если я ставлю аддон, могу я как-то через него заодно добавить поисковый плагин?
м.б. есть где-то пример?
(There is currently no text in this page)
Но все равно спасибо, первый пост помог. Пока вроде работает, как выше писал.
А можно как-то сделать, чтоб событие происходило не по окончании загрузки, а при начале.
gBrowser.webProgress для всех табов или аналогично для конкретного browser-а
На всякий случай: есть еще DOMContentLoaded - когда загрузился только html, а картинки и т.д. - еще нет.
C DOMContentLoaded понятно:
gBrowser.addEventListener('DOMContentLoaded', pageLoaded, true);
а с gBrowser.webProgress что-то никак не разберусь, м.б. есть где-то пример? :(
Добавлено:
Сделал так, вроде работает (тестирую):
var myProgressListener = {'onLocationChange': function(a, b, c, d){pageLoaded(a, b, c, d);}}; gBrowser.addProgressListener(myProgressListener);
Еще вопрос. У меня в аддоне событие происходит по загрузке страницы:
window.addEventListener( 'load', function () { gBrowser.addEventListener('load', pageLoaded, true); }, false );
А можно как-то сделать, чтоб событие происходило не по окончании загрузки, а при начале.
Т.е. УРЛ уже поменялся, но страница не догрузилась и вот в это время...
Можно ли как-то в аддоне узнать локальный ip адрес пользователя?
Есть такой вариант:
Не знаю, что делаю не так, но не работает, а try/catch выдает
Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIDNSService.resolve]
И еще вопрос, как узнать IP сайта, на который пользователь зашел?
Всем привет.
Можно ли как-то в аддоне узнать локальный ip адрес пользователя?
Уверенное "НЕТ" тоже будет хорошим ответом. :D
Хочу вызывать функцию при смене табов пользователем.
Сделал так:
window.addEventListener('select', function(event) { if (event.originalTarget.tagName == 'xul:tabs') alert('test') }, false);
Вроде работает, но т.к. опыта мало..., вдруг есть какой-нибудь более правильный вариант?!