>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >CSS-стили http://forum.mozilla-russia.org/viewforum.php?id=38 >Как задать путь к файлу http://forum.mozilla-russia.org/viewtopic.php?id=70413 |
Duche > 17-08-2016 15:57:28 |
Добрый день. Прошу помощи у форумчан. Необходимо решить задачу, по изменению путей к файлам в портабельной версии Firefox. Итак , у меня изменён стиль FF посредством Stylish и Userchrom. Изменены цвета , фоны , кнопки и тд. Встала необходимость переноса FF на флешку и естественно появилась проблема с путями . Сейчас пути к файлам выглядят так "url("file:///D:/Firefox/Folder/K333.jpg". Как прописать пути к файлам , чтобы пути к изображениям были постоянными и не зависли от буквы флешки присвоенной системой, при работе с флешки на разных с компьютерах. Вариант с url(имя.тип) в папке chrome не работает. Изображения достаточно большие (фоны) и переводу в base64 нежелательны. Заранее спасибо. |
turbot > 17-08-2016 16:40:12 |
Для userContent/userChrome: https://forum.mozilla-russia.org/viewto … 68#p682968 |
Duche > 17-08-2016 18:25:20 |
Не могу подцепить из юзерХром вот такой код, в 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} } |
turbot > 17-08-2016 19:29:37 |
Duche пишет
Может, потому что коды для сайтов нужно в userContent.css класть? |
Duche > 17-08-2016 19:57:36 |
turbot пишет
Поклал ,сработало. И маленький вопрос для самообразования. Существует ли ограничение по размеру конвертируемого в Base64 файла. Примите искреннюю благодарность за Вашу работу. |
turbot > 17-08-2016 20:04:57 |
Стоит избегать конвертирования файлов больше одного-двух мегабайтов. По личным наблюдениям. Сказывается на производительности. Это единственное ограничение, насколько мне известно. |
Duche > 17-08-2016 20:07:55 |
turbot пишет
Понял. Спасибо. |
Dumby > 17-08-2016 21:33:16 |
turbot пишет
Я бы добавил в конфигурационный файл код, и заменил бы 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); |
turbot > 17-08-2016 21:41:39 |
Dumby |
Duche > 18-08-2016 09:10:16 |
turbot пишет
Я правильно понял, что код от Dumby надо добавить в userContent.css , а путь "url("file:///D:/Firefox/Folder/K333.jpg", переписать на "url("resource://root:/Firefox/Folder/K333.jpg". |
Dumby > 18-08-2016 12:52:20 |
Duche пишет
Нет, не правильно. Вот смотри, добавь код в инициализацию скрытый текст Выделить код Код:(({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); |
Duche > 18-08-2016 13:42:27 |
Dumby пишет
Работает , картинка открывается из chrome . А каково отличие вашего способа с кодом и resource://chrome, от способа , положить K333.jpg в папку chrome, и указать путь {background: url("K333.jpg") , тоже срабатывает или есть тонкости? |
Dumby > 18-08-2016 16:46:21 |
Duche |
Duche > 18-08-2016 17:01:34 |
Dumby пишет
Что должно получится понятно и работает . А в чем + или - вашего способа . Или это просто , два способа достижения одной цели. |
Dumby > 18-08-2016 17:34:10 |
Duche
вот я и встрял. |
Duche > 18-08-2016 17:55:18 |
Dumby пишет
Понятно. Спасибо за помощь и разъяснения. |
Dumby > 19-08-2016 00:21:03 |
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 > 19-08-2016 07:04:55 |
Dumby пишет
Переписать на что и где? |
Duche > 24-08-2016 16:20:53 |
Duche пишет
Dumby, turbot. A-уууууууууу. Где Вы ,братья по разуму. Осталось чуть доделать. |
turbot > 24-08-2016 16:47:57 |
Просто положите код Dumby либо в конфигурационный файл (не забывайте про обязательность наличия закоментированной первой строки), либо в инициализацию Custom Buttons кнопки. |
Duche > 24-08-2016 17:35:42 |
turbot пишет
Dumby пишет
Повторюсь "Переписать на что и где?" Код положил давно,но не получается намертво привязать свои пути "D или H,G итд :\Папка для скачивания" к всем скачиваемым Firefof файлам, что бы пути были постоянными и не зависли от буквы флешки , присвоенной системой, при работе с флешки на разных с компьютерах. |
turbot > 24-08-2016 17:47:28 |
Duche |
Duche > 24-08-2016 18:08:57 |
turbot пишет
Спасибо за разъяснение. Я правильно понял , если в коде изменить "browser.download.dir" на "extensions.downloadbar.audioplayerpath" , то таким образом можно прописать пути к звукам при завершении загрузки. Если я прав, то необходимо создать два кода с разными строками "browser.download.dir"и "extensions.downloadbar.audioplayerpath" или две строки через запятую, в одном коде. |
turbot > 24-08-2016 18:25:52 |
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"] - можете и другие параметры дописывать, по образцу. |
Duche > 24-08-2016 19:13:27 |
turbot пишет
turbot. Примите искреннюю благодарность за Вашу работу и разъяснения. Буду пробывать. |
Duche > 24-08-2016 20:07:44 |
turbot пишет
Конфигурационный файл это- userContent ? |
turbot > 24-08-2016 20:13:35 |
Duche > 24-08-2016 20:29:05 |
turbot пишет
Так? D:\Firefox\Profile\config.js |
turbot > 24-08-2016 20:35:23 |
Нет. Там же написано. config.js - в папку браузера. Не профиля. Туда, где исполняемый файл находится. config-prefs.js - в папку pref, в папке defaults, в папке браузера. |
Duche > 24-08-2016 20:42:28 |
turbot пишет
Большое спасибо! 24-08-2016 20:47:42 turbot пишет
В моём случае, config-prefs.js нужен? |
turbot > 24-08-2016 20:50:50 |
Да. |
Duche > 24-08-2016 20:56:43 |
turbot пишет
По образцу - Выделить код Код:pref("general.config.obscure_value", 0); pref("general.config.filename", "config.js"); |
Duche > 25-08-2016 09:13:19 |
Создал,положил, config-prefs.js по образцу постом выше - D:\Firefox\Firefox\defaults\pref\config-prefs.js а config.js в D:\Firefox\config.js , пути не путал , первую строку в вашем (turbot) коде закомментировал , проверил js внутри, всё правильно. Проверял коды turbot и Dumby, а в ответ: |
turbot > 25-08-2016 14:38:59 |
turbot пишет
|
Duche > 25-08-2016 15:49:46 |
turbot пишет
Закомментировал , разкомментировал ,не работает. Не пойму в чём дело. |
turbot > 25-08-2016 17:05:46 |
А, действительно, не работает. Я попробовал сделать: Выделить код Код:// try { const {Services} = Components.utils.import("resource://gre/modules/Services.jsm", {}); const {OS} = Components.utils.import("resource://gre/modules/osfile.jsm", {}); ((prefs, disk, dir) => prefs.forEach(pref => (dir = Services.prefs.get(pref)) && dir[0] != disk && Services.prefs.set(pref, disk + dir.slice(1))) )(["browser.download.dir", "extensions.downloadbar.audioplayerpath"], OS.Constants.Path.libDir[0]) } catch (ex) {}; Но нет. Не знаю, как сделать, чтобы код в файле заработал. Ждите Dumby. Либо используйте CB. Он же у вас и так стоит. Зачем вам вообще тогда эта возня с конфигурационным файлом? |
Duche > 25-08-2016 17:24:09 |
turbot пишет
Подождём Dumby, только бы тему увидел. Тему буду смотреть ежедневно. Я насчёт конфигурационного файла , всё просто. Подальше положишь , дольше проработает FF. |
Ki_rrrilll > 27-06-2017 16:40:26 |
Я решил отписаться здесь, поскольку мой вопрос тоже касается пути к файлу. Я конвертировал картинку в base64 и хочу прописать полученный код в css файл в виде Но дело в том, что в css файле эта картинка подставляется в нескольких местах. И я каждый раз должен вставлять этот монструозный base64 код. css файл разбухает, при том, что сама картинка весит всего 10 кб. Вопрос: можно ли эту base64 строку сохранить в переменную или еще как то, чтобы подставлять ее, а не писать в нескольких местах один и тот же огромный код? |
FireForce > 27-06-2017 17:04:53 |
Ki_rrrilll Используйте css-переменные. Выделить код Код:parent { --my-bg-image: url(data:image/png;base64, /* code */) } child { background-image: var(--my-bg-image) } Замените parent и child на свои пары элементов, либо используйте псевдокласс `:root` в качестве самого старшего родителя. Ссылки по теме: |
Ki_rrrilll > 27-06-2017 18:48:21 |
FireForce
Я даже не знал, что это существует. Большое спасибо! |