Добрый день. Прошу помощи у форумчан. Необходимо решить задачу, по изменению путей к файлам в портабельной версии Firefox. Итак , у меня изменён стиль FF посредством Stylish и Userchrom. Изменены цвета , фоны , кнопки и тд. Встала необходимость переноса FF на флешку и естественно появилась проблема с путями . Сейчас пути к файлам выглядят так "url("file:///D:/Firefox/Folder/K333.jpg". Как прописать пути к файлам , чтобы пути к изображениям были постоянными и не зависли от буквы флешки присвоенной системой, при работе с флешки на разных с компьютерах. Вариант с url(имя.тип) в папке chrome не работает. Изображения достаточно большие (фоны) и переводу в base64 нежелательны. Заранее спасибо.
Отредактировано Duche (17-08-2016 16:17:16)
Отсутствует
Для userContent/userChrome: https://forum.mozilla-russia.org/viewto … 68#p682968
В Stylish - только конвертировать в base64.
Отсутствует
Не могу подцепить из юзерХром вот такой код, в Stylish работает.
@namespace url(http://www.w3.org/1999/xhtml); @-moz-document url(https://www.мойсайт.ru/) { body, html {background: url("gothamgard.jpg") !important; background-color: inherit !importan} }
Отсутствует
userContent.css класть
Поклал ,сработало. И маленький вопрос для самообразования. Существует ли ограничение по размеру конвертируемого в Base64 файла.
Примите искреннюю благодарность за Вашу работу.
Отредактировано Duche (17-08-2016 19:58:26)
Отсутствует
Существует ли ограничение по размеру конвертируемого в Base64 файла.
Стоит избегать конвертирования файлов больше одного-двух мегабайтов. По личным наблюдениям. Сказывается на производительности. Это единственное ограничение, насколько мне известно.
Отсутствует
В Stylish - только конвертировать в base64.
Я бы добавил в конфигурационный файл код, и заменил бы file:///D: на resource://root
// (({utils: Cu, interfaces: Ci}) => { try { var {Services} = Cu.import("resource://gre/modules/Services.jsm", {}); var file = Services.dirsvc.get("GreD", Ci.nsIFile); while(file.parent) file = file.parent; Services.io.getProtocolHandler("resource").QueryInterface(Ci.nsIResProtocolHandler) .setSubstitution("root", Services.io.newFileURI(file)); } catch(ex) {}})(Components);
Отредактировано Dumby (17-08-2016 21:34:20)
Отсутствует
Я бы добавил в конфигурационный файл код, и заменил бы file:///D: на resource://root
Я правильно понял, что код от Dumby надо добавить в userContent.css , а путь "url("file:///D:/Firefox/Folder/K333.jpg", переписать на "url("resource://root:/Firefox/Folder/K333.jpg".
Два вопроса . Надо ли добавить закрывающую скобку в коде Dumby , после " catch(ex) {}})(Components); и для чего такое дополнение надо.
Отсутствует
Я правильно понял
Нет, не правильно. Вот смотри, добавь код в инициализацию
какой-нибудь Custom Buttons кнопки, скопируй K333.jpg в папку chrome,
затем открой адрес resource://chrome/K333.jpg
(({io, dirsvc, prefs}) => { var substitution = "chrome", dir = "UChrm"; var rph = io.getProtocolHandler("resource").QueryInterface(Ci.nsIResProtocolHandler); addDestructor(reason => reason[5] == "e" && rph.hasSubstitution(substitution) && rph.setSubstitution(substitution, null)); if (rph.hasSubstitution(substitution)) return; rph.setSubstitution(substitution, io.newFileURI(dirsvc.get(dir, Ci.nsIFile))); if (!prefs.getBoolPref("extensions.stylish.styleRegistrationEnabled")) return; stylishOverlay.turnOnOff(false); stylishOverlay.turnOnOff(true); })(Services);
Отредактировано Dumby (19-08-2016 00:20:34)
Отсутствует
Нет, не правильно. Вот смотри
Работает , картинка открывается из chrome . А каково отличие вашего способа с кодом и resource://chrome, от способа , положить K333.jpg в папку chrome, и указать путь {background: url("K333.jpg") , тоже срабатывает или есть тонкости?
Отсутствует
вот я и встрял
Понятно. Спасибо за помощь и разъяснения.
Вопрос не по теме, что бы не плодить темы. Есть возможность такое сделать с путями сохранения файлов при скачивании , потом прописать их в about:config . У меня пути D:\Папка для скачивания , хочется что бы пути были постоянными и не зависли от буквы флешки , присвоенной системой, при работе с флешки на разных с компьютерах.
Отсутствует
Duche
Можно переписать первую букву настройки.
((pref, disk, dir) => //Date.now() - Services.startup.getStartupInfo().firstPaint < 500 && //!Services.startup.wasRestarted && (dir = Preferences.get(pref)) && dir[0] != disk && Preferences.set(pref, disk + dir.slice(1)) )("browser.download.dir", OS.Constants.Path.libDir[0]);
Отсутствует
Просто положите код
Duche
Можно переписать первую букву настройки.
Повторюсь "Переписать на что и где?"
Код положил давно,но не получается намертво привязать свои пути "D или H,G итд :\Папка для скачивания" к всем скачиваемым Firefof файлам, что бы пути были постоянными и не зависли от буквы флешки , присвоенной системой, при работе с флешки на разных с компьютерах.
Отсутствует
Код автоматически, при инициализации, если буква диска в параметре about:config'а browser.download.dir не совпадает с той, с которой запущен браузер, меняет ее.
Спасибо за разъяснение. Я правильно понял , если в коде изменить "browser.download.dir" на "extensions.downloadbar.audioplayerpath" , то таким образом можно прописать пути к звукам при завершении загрузки. Если я прав, то необходимо создать два кода с разными строками "browser.download.dir"и "extensions.downloadbar.audioplayerpath" или две строки через запятую, в одном коде.
Отсутствует
Duche
Можно так:
((prefs, disk, dir) => prefs.forEach(pref => (dir = Preferences.get(pref)) && dir[0] != disk && Preferences.set(pref, disk + dir.slice(1))) )(["browser.download.dir", "extensions.downloadbar.audioplayerpath"], OS.Constants.Path.libDir[0])
В ["browser.download.dir", "extensions.downloadbar.audioplayerpath"] - можете и другие параметры дописывать, по образцу.
Отсутствует