>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Вывод сообщения в строку состояния http://forum.mozilla-russia.org/viewtopic.php?id=61779 |
ganzales > 03-02-2014 15:48:42 |
Всем привет, сразу скажу что не силен в дополнениях и в разработке в целом, но хочу переделать одно дополнение, так вот нужно выводить сообщения в строку состояния, как это можно реализовать? window.status не подходит. |
Infocatcher > 03-02-2014 16:16:37 |
Можно использовать из chrome://browser/content/browser.js. |
ganzales > 03-02-2014 16:36:37 |
Так с ходу XULBrowserWindow.setOverLink("что-то там"); не заработало, может надо еще что-то подключать? |
Infocatcher > 03-02-2014 17:23:05 |
Откуда вызывается код? |
ganzales > 03-02-2014 17:35:54 |
вот в этом аддоне https://addons.mozilla.org/ru/firefox/addon/Y-Translate/ |
Infocatcher > 03-02-2014 18:05:02 |
А, это на Add-on SDK штука (и нужно изучать соответствующую документацию), там из этого скрипта надо сначала сообщение наверх отправить... и Выделить код Код:worker.port.on("scoped", function(sentence, lng){translate(worker, sentence, lng)}); в lib/main.js Причем внизу окно браузера недоступно, а наверху доступны все окна, но нужно понять, из какого пришло сообщение (или использовать активное). |
Infocatcher > 06-02-2014 13:16:21 |
Видимо, что-то вроде в inline02.js Выделить код Код:worker.port.on("status", function(msg) { var utils = require("sdk/window/utils"); var active = utils.getMostRecentBrowserWindow(); active.XULBrowserWindow.setOverLink(msg); }); в lib/main.js. |
ganzales > 06-02-2014 14:51:22 |
Выделить код Код:function injected(worker) { // push parameters worker.port.emit("Prefs", prefHandle.Prefs()); worker.port.emit("Urls", { ajax_loader: self.data.url("ajax-loader.gif") }); prefs.setChanged(function(){ worker.port.emit("Prefs", prefHandle.Prefs())}) worker.port.on("scoped", function(sentence, lng){translate(worker, sentence, lng)}); worker.port.on("status", function(msg) { var utils = require("sdk/window/utils"); var active = utils.getMostRecentBrowserWindow(); active.XULBrowserWindow.setOverLink('test'); }); addWorker(worker); var isin = exclusionList.findHost(getHostName(worker.url)); if(!isin) worker.port.emit("enable", {}); } сделал так, но результата почему то нет |
Infocatcher > 06-02-2014 21:12:08 |
Там вот такое выдает:
Я добавил в harness-options.json
И потом в resources\y-translate\lib\main.js
И в resources\y-translate\data\inline02.js
Вроде, работает. 06-02-2014 21:13:35 Infocatcher пишет
Но почему-то только для Выделить код Код:worker.port.on("status", function(msg) { try { var utils = require("sdk/window/utils"); var active = utils.getMostRecentBrowserWindow(); active.XULBrowserWindow.setOverLink(msg); } catch(e) { throw new Error("worker.port.on error: " + e); } }); |
ganzales > 06-02-2014 22:26:14 |
Супер! убрал ненужные функции, типа создания блока которые перегораживает все и вся, убрал поддержку перевода русский-английский, добавил очистку при потере фокуса, вообще этот скрипт по хорошему бы переписать полностью, единственное что в нем хорошего, так это захват текста и тот работает криво, например на утубе в комментариях уже не работает. альфа: https://drive.google.com/file/d/0B7pYmUnFHoXpbGpnaThzSVJLZW8/edit?usp=sharing |