Полезная информация

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№1227620-10-2017 18:03:36

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 505
UA: Firefox 45.0

Re: Custom Buttons

Да, походу , этот хак предложенный Infocatcher работает в 57-й норм. но плюсом так же убирает разделение на процессы :P  в одном всё начинает работать. И по объему становится ~ равным PM
de353d632164483.jpg

Брагодарю, ребятки, за распорку! Работаить!
ЕЯПП праит она нечто из omni.ja ?  так может можно его прям там захачить один раз, сохранить образец и дальше при обнове править scratch_one-s_head.gif

ps. вообще, надо побольше поюзать эту 57 :/  вроде ничче так получается замена хромам. может и ошибочное первое впечатление было, может можно будет его..того.. напильнеком закруглить в нужную форму и поведение. Поглядим.


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№1227721-10-2017 11:42:03

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2255
UA: Firefox 52.0

Re: Custom Buttons

Infocatcher

Dumby пишет

загружаются ли в отдельные окна адреса вида
data:application/vnd.mozilla.xul+xml,…

Нашёл! У меня вот так работает.
Как думаешь, это безопасно?

скрытый текст

Выделить код

Код:

var xul = `
    <?xml version="1.0"?>
    <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
    <dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
        onload="document.querySelector('label').value += window.arguments[0];">
        <label value="Test: "></label>
    </dialog>
`;

var url = "data:application/vnd.mozilla.xul+xml," + encodeURIComponent(xul.trim());
var features = "chrome,all,resizable,dependent,left=400,top=240,width=300,height=140";

var pref = "security.data_uri.unique_opaque_origin";
var val = Services.prefs.getBoolPref(pref);
if (val) Services.prefs.setBoolPref(pref, false);

window.openDialog(url, "_blank", features, "OK");

if (val) Services.prefs.setBoolPref(pref, true);

Отсутствует

 

№1227821-10-2017 20:30:20

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 55.0

Re: Custom Buttons

Dumby пишет

Как думаешь, это безопасно?

А вот интересно, возможно ли сформировать выпадающий с ошибкой window.openDialog()?

Обгуглил: 1, 2. Вот с точки зрения безопасности – вообще не вижу проблем («мы сделаем как в других браузерах», а не мы закроем такую-то уязвимость).

Для старых версий есть смысл добавить

Выделить код

Код:

var val = Services.prefs.getPrefType(pref) == Services.prefs.PREF_BOOL && Services.prefs.getBoolPref(pref);

А дальше, для успокоения, то ли try/finally, то ли

Выделить код

Код:

if (val) {
    Services.prefs.setBoolPref(pref, false);
    setTimeout(function() {
        Services.prefs.setBoolPref(pref, true);
    }, 0);
}

Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№1227929-10-2017 07:34:40

bugmenot
Участник
 
Группа: Members
Зарегистрирован: 29-01-2012
Сообщений: 35
UA: Firefox 45.0
Веб-сайт

Re: Custom Buttons

Есть два окна, каким кодом перенести вкладку из одного в другое, как это делает drag&drop, т.е., без перезагрузки содержимого?

Отсутствует

 

№1228029-10-2017 10:07:25

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 52.0
Веб-сайт

Re: Custom Buttons

Если я напишу #urlbar:hover {min-width: 600px !important;}, то минимальная ширина urlbarа станет 600рх если курсор на urlbarе.
Но на urlbarе имеются ещё и иконки - они тоже сдвинутся, что не желательно.
Как мне написать подобную команду, но чтобы минимальная ширина устанавливалась только если курсор на текстовой части urlbarа?
Есть такая возможность сделать это стилем?


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№1228129-10-2017 16:51:25

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 505
UA: Firefox 45.0

Re: Custom Buttons

difabor пишет

#urlbar:hover

может так

Выделить код

Код:

#urlbar[focused="true"] {}

а сложно или может уже есть , но я не нашел ... сделать кнопку для : "добавить к tooltip-у вкладки её урл. адресс" ?


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№1228229-10-2017 22:18:01

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 52.0
Веб-сайт

Re: Custom Buttons

Какая прелесть! Большое спасибо, mokujin, работает по клику! А клики на иконки не изменяют ширины, то есть так как надо!
Ещё раз большое спасибо!


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№1228329-10-2017 22:54:32

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2255
UA: Firefox 52.0

Re: Custom Buttons

bugmenot пишет

Есть два окна, каким кодом перенести вкладку из одного в другое, как это делает drag&drop, т.е., без перезагрузки содержимого?

Для лисиц помоложе есть метод gBrowser.adoptTab

А для 45-й открываешь страницу с адресом
view-source:chrome://browser/content/tabbrowser.xml
находишь хэндлер "drop" и копируешь из него нужный код.

Ну, приблизительно, как-то так

скрытый текст

Выделить код

Код:

for(var win of CustomizableUI.windows) {
    if (win == window) win = null; else break;
}
if (win) {
    var tab = gBrowser.selectedTab, gb = win.gBrowser;
    var url = tab.linkedBrowser.currentURI.spec;

    var newTab = gb.addTab("about:blank");
    var newBrowser = gb.getBrowserForTab(newTab);
    gb.updateBrowserRemotenessByURL(newBrowser, url);

    newBrowser.stop();
    newBrowser.docShell;

    gb.selectedTab = newTab;
    gb.swapBrowsersAndCloseOther(newTab, tab);
    gb.updateCurrentBrowser(true);
}

mokujin пишет

сделать кнопку для : "добавить к tooltip-у вкладки её урл. адресс"

:/ Что-нибудь незамысловатое подойдёт?

скрытый текст

Выделить код

Код:

((tooltip, tab) => tooltip && addEventListener("popupshowing", e =>
    !e.defaultPrevented && (tab = document.tooltipNode)
    && tab.localName == "tab" && !tab.mOverCloseButton && !tab._overPlayingIcon
    && (tooltip.boxObject.firstChild.firstChild.data =
        tooltip.getAttribute("label") + "\n" + tab.linkedBrowser.currentURI.spec)
, false, tooltip))(document.getElementById("tabbrowser-tab-tooltip"));

Отсутствует

 

№1228429-10-2017 22:57:31

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 52.0
Веб-сайт

Re: Custom Buttons

mokujin,
Насчёт 'сделать кнопку для : "добавить к tooltip-у вкладки её урл. адрес' - у Infocatcherа есть такой аддон: Tab Scope Tweaker
и там есть ссылка на код: Infocatcher/Tab_Scope_Tweaker на гитхабе
Этот аддон добавляет урл адрес вкладки к превью вкладки, которое делает другой аддон - Tab Scope.
Может быть из того кода Infocatcherа можно понять как этот урл получить, по mouseover запомнить исходный  title и затем добавить этот урл к title таба, а по mouseleave - восстановить исходный title.
Мне во всём этом трудно разобраться, но может Вы сможете?
P.S. Раз Dumby уже предложил решение, мои сентенции можно вообще опустить :)

Отредактировано difabor (29-10-2017 23:10:22)


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№1228530-10-2017 01:07:28

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 505
UA: Firefox 45.0

Re: Custom Buttons

благодарю, парни.
Dumby - дал готовое, difabor - подкинул инфу.
Шшикарненько, пойду ковырять\пробовать :blush: :)

Добавлено 30-10-2017 01:29:33
добавил decodeURIComponent(); шобы ссылки с кириллицей норм. показывало.
9e3cc7641178303.jpg
ТакЪ:

скрытый текст

Выделить код

Код:

// К тултипу вкладки добавить её Url  ©Dumby
((tooltip, tab) => tooltip && addEventListener("popupshowing", e =>
    !e.defaultPrevented && (tab = document.tooltipNode)
    && tab.localName == "tab" && !tab.mOverCloseButton && !tab._overPlayingIcon
    && (tooltip.boxObject.firstChild.firstChild.data =
        tooltip.getAttribute("label") + "\n" + decodeURIComponent(tab.linkedBrowser.currentURI.spec))
, false, tooltip))(document.getElementById("tabbrowser-tab-tooltip"));


fc15db41ec50ab9dd0dd06be83d545c4.gif

Отредактировано mokujin (30-10-2017 01:30:21)


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№1228630-10-2017 17:58:59

bugmenot
Участник
 
Группа: Members
Зарегистрирован: 29-01-2012
Сообщений: 35
UA: Firefox 45.0
Веб-сайт

Re: Custom Buttons

Dumby пишет
bugmenot пишет

Есть два окна, каким кодом перенести вкладку из одного в другое, как это делает drag&drop, т.е., без перезагрузки содержимого?

Ну, приблизительно, как-то так

О, спасибо!)

Отсутствует

 

№1228706-11-2017 00:04:04

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 56.0

Re: Custom Buttons

Я так понимаю, в Firefox 58.0a1 (2017-11-05) или где-то рядом с гиканьем и улюлюканием открутили загрузку настроек по умолчанию из defaults/preferences/*.js legacy-расширений. Как следствие, снова сломало Custom Buttons (и если бы только его...).

Добавлено 06-11-2017 00:18:17
Неподписанная версия с новыми распорками: custom_buttons-0.0.5.8.9-fixed7pre.xpi

Отредактировано Infocatcher (06-11-2017 00:18:17)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№1228806-11-2017 02:01:43

okkamas_knife
We are the Borg.       Resistance is futile.
 
Группа: Members
Зарегистрирован: 21-10-2009
Сообщений: 9558
UA: Seamonkey 2.14

Re: Custom Buttons

Нужно больше костылей!
БОЛЬШЕ!!!


я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3

Отсутствует

 

№1228906-11-2017 07:18:48

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 42.0

Re: Custom Buttons

Infocatcher
Наблюдаю за вашей героической борьбой с разработчиками Мозилы. А что дальше? Ведь рано или поздно Custom Button канет в лету или как? Уже подумываю, а может лучше сразу на оригинал (Хром) переходить, чем пользоваться клоном (Firefox)? Ведь всё к тому идёт.


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№1229006-11-2017 17:05:26

LittleMontana
Участник
 
Группа: Members
Зарегистрирован: 16-11-2013
Сообщений: 214
UA: Firefox 55.0

Re: Custom Buttons

villa7
можно и на хром, только это все переносить надо, то что сейчас есть в профиле фаерфокса. а там не мало, и не только у меня такая ситуация наверн

Отсутствует

 

№1229106-11-2017 18:12:25

unter_officer
Участник
 
Группа: Members
Откуда: Санкт-Петербург
Зарегистрирован: 27-03-2011
Сообщений: 604
UA: Firefox 48.0

Re: Custom Buttons

villa7 пишет

Уже подумываю, а может лучше сразу на оригинал (Хром) переходить, чем пользоваться клоном (Firefox)? Ведь всё к тому идёт.

А я поглядываю в сторону Pale Moon.
Те немногие дополнения, которыми я пользуюсь в FF, есть и для Pale Moon. Тот небольшой набор кнопок, которым я пользуюсь в FF, работает и в Pale Moon.

Отредактировано unter_officer (06-11-2017 18:12:54)


«The Truth Is Out There»

Отсутствует

 

№1229206-11-2017 18:15:23

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 56.0

Re: Custom Buttons

villa7 пишет

а может лучше сразу на оригинал (Хром) переходить, чем пользоваться клоном (Firefox)?

А под Хром ничего интересного не написать. Хоть какой-то интерес представляют форки Firefox, которые, впрочем, не факт что потянут обновления под новые стандарты (та же старая Opera не потянула).
И пока что все говорит в пользу некомпетентности руководства Mozilla: хоть сколько-то доработанные, но не обкатанные на реальной пользовательской базе WebExtensions внедряются одновременно с выпиливанием старых расширений. Тогда как логичнее было бы сначала выкатить в релиз, собрать статистику, отзывы – чтобы кому не понравилось, включили бы поддержку старых расширений. И чтобы было видно, что востребовано, ради каких расширений пользователи отказываются от потенциального преимущества в быстродействии.
Или вот грядущая (как я понимаю) зачистка AMO от устаревших расширений – сразу видно, что пользователи Thunderbird и SeaMonkey никого не волнуют. Правда, это, увы, ожидаемо.


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№1229306-11-2017 23:51:49

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 56.0

Re: Custom Buttons

Infocatcher пишет

чинил DOM Inspector

О! А, оказывается, его все-таки не полностью забросили:
/seamonkey/releases/2.49.1/distributed/inspector@mozilla.org.xpi
По ссылке некий DOM Inspector 2.0.17.1, хотя и без исправлений под Nightly, но зато с некими правками про перетаскивание.


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№1229408-11-2017 13:41:34

svin88
Участник
 
Группа: Members
Зарегистрирован: 26-07-2011
Сообщений: 14
UA: Firefox 56.0

Re: Custom Buttons

такой вопрос - есть расширение Tab Scope http://www.xuldev.org/tabscope/ или https://addons.mozilla.org/ru/firefox/a … serprofile- всплывающее мини-окно на вкладке
но кнопка  для вкл/откл превью вкладок не предусмотрена
возможно ли на это расширение сделать кнопку Вкл минипросмотр вкладок/выключить минипросмотр вкладок ?
по about:config   команды не наблюдаю ..

Отредактировано svin88 (09-11-2017 22:55:59)

Отсутствует

 

№1229509-11-2017 13:23:53

Coroner
Участник
 
Группа: Members
Зарегистрирован: 29-10-2012
Сообщений: 4002
UA: Firefox 55.0

Re: Custom Buttons

День добрый!
Попробовал перенести кнопку Memory Monitor на 57, ожидаемо не заработала.
Попробовал обкорнать до минимума и выводить счётчик на label кнопки. Вышло такое:

скрытый текст

Выделить код

Код:

/*Initialization Code*/
var style = custombutton.buttonGetHelp(self).replace(/id/g, _id); 
var uri = makeURI('data:text/css,'+ encodeURIComponent(style)); 
var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); 
sss.loadAndRegisterSheet(uri, 0);
 
(function () {  
   self.timer = setInterval(function() { self.label = getMemory() + ' MB'}, 2000 );
  
   function getMemory() {            
      var reporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager);
      try {
          var e = reporterManager.enumerateReporters();
          while ( e.hasMoreElements() ) {
                  var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter);
                  self[mr.path] = mr;
                  }
          var memory = self["resident"].amount;
          } 
      catch(e) { var memory = reporterManager.resident; }
      
      return ( Math.round( memory/1048576 ) );
   };     
 
  addDestructor(function() { 
      try { window.clearTimeout( self.timer ) } catch(e) {};
   });
})();


Всё работает, но интересует addDestructor...
Достаточно этого для правильной работы кнопки или что-то нужно добавить/изменить?

Отредактировано Coroner (09-11-2017 13:24:37)

Отсутствует

 

№1229609-11-2017 15:02:20

emlen
Участник
 
Группа: Members
Зарегистрирован: 22-05-2015
Сообщений: 201
UA: Firefox 52.0

Re: Custom Buttons

А есть вообще кнопки Custom Buttons работающие под Firefox ESR 52.3.0 (64-бит)?


SeaMonkey 2.39 forever

Отсутствует

 

№1229713-11-2017 18:58:19

ProfObzor
Участник
 
Группа: Members
Зарегистрирован: 21-05-2016
Сообщений: 3
UA: Firefox 49.0

Re: Custom Buttons

Помогите пожалуйста создать или подскажите если есть подобное: кнопка с выпадающим списком закладок примерно как здесь: https://forum.mozilla-russia.org/viewto … 31#p428831
ну естественно там будут наиболее часто используемые закладки и желательно чтоб в выпадающем списке были именно иконки примерно как на картинке

картинка кликабельна

555jpg_2709700_28299403.jpg

Отредактировано ProfObzor (13-11-2017 19:03:25)

Отсутствует

 

№1229813-11-2017 23:31:46

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 42.0

Re: Custom Buttons

ProfObzor
Эту глянте, может устроит.
https://forum.mozilla-russia.org/viewtopic.php?id=57871


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№1229913-11-2017 23:57:02

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2255
UA: Firefox 52.0

Re: Custom Buttons

Infocatcher пишет

Or should be written some custom loader to enumerate all install locations and load defaults/preferences/*.js manually.

Да-да, я сразу что-то такое в конфигурационный файл добавил.
И, вроде, даже как-то работает, на первый взгляд.

скрытый текст

Выделить код

Код:

// Firefox 58+
// bug 1413413 - Remove support for extensions having their own prefs file
// https://bugzilla.mozilla.org/show_bug.cgi?id=1413413

try {(({Preferences, Services}, {classes: Cc, interfaces: Ci, utils: Cu}) => {
    if (parseInt(Services.appinfo.version) < 58) return;

    var urls = new Set(), file = Services.dirsvc.get("ProfD", Ci.nsIFile);

    var skip = addon =>
        addon.type != "extension" || addon.bootstrap
        || ("location" in addon && addon.location != "app-profile")
        || addon.userDisabled || addon.appDisabled || addon.softDisabled;

    var files = (dir, callback) => {
        if (!dir.exists() || !dir.isDirectory()) return;
        var en = dir.directoryEntries;
        while(en.hasMoreElements()) {
            var file = en.getNext().QueryInterface(Ci.nsIFile);
            if (file.isFile()) callback(file);
        }
    }
    var fromZip = file => {
        var zr = Cc["@mozilla.org/libjar/zip-reader;1"].createInstance(Ci.nsIZipReader);
        try {
            zr.open(file);
            var prfx = "jar:" + Services.io.newFileURI(file).spec + "!/";
            var en = zr.findEntries("defaults/preferences/*.js$");
            while(en.hasMore()) urls.add(prfx + en.getNext());
        }
        finally {zr.close();}
    }
    var fromDir = dir => {
        ["defaults", "preferences"].forEach(dir.append);
        if (dir.exists() && dir.isDirectory()) files(dir, file =>
            file.leafName.endsWith(".js") && urls.add(Services.io.newFileURI(file).spec)
        );
    }
    var readFile = "readFile" in Cu ? "readFile" : "readUTF8File";

    var staged = file.clone(), stagedIds = new Set();
    ["extensions", "staged"].forEach(staged.append);
    if (staged.exists() && staged.isDirectory()) files(staged, file => {
        if (!file.leafName.endsWith(".json")) return;
        var addon = JSON.parse(Cu[readFile](file));
        if (skip(addon)) return;

        stagedIds.add(addon.id);
        file.initWithPath(file.path.replace(/\.json$/, ".xpi"));
        if (file.exists() && file.isFile()) fromZip(file);
        else {
            file.initWithPath(file.path.slice(0, -4));
            if (file.exists() && file.isDirectory()) fromDir(file);
        }
    });

    file.append("extensions.json");
    if (file.exists() && file.isFile()) {
        var {addons} = JSON.parse(Cu[readFile](file));
        addons.forEach(addon => {
            if (skip(addon) || stagedIds.has(addon.id)) return;
            file.initWithPath(addon.path);
            if (!file.exists()) return;

            if (file.isFile()) fromZip(file);
            else if (file.isDirectory()) fromDir(file);
        });
    }
    if (!urls.size) return;

    var prefs = new Preferences({defaultBranch: true});
    var obj = {
        pref: function(key, val) {
            if (!/^chrome:\/\/.+\.properties$/.test(val))
                return prefs.set(key, val);
            var pls = Cc["@mozilla.org/pref-localizedstring;1"]
                .createInstance(Ci.nsIPrefLocalizedString);
            pls.data = val;
            prefs._prefBranch.setComplexValue(key, Ci.nsIPrefLocalizedString, pls);
        }
    };
    urls.forEach(url => {try {
        Services.scriptloader.loadSubScript(url, obj);
    } catch(e) {}});

})(Components.utils.import("resource://gre/modules/Preferences.jsm", {}), Components);} catch(ex) {}


А затем подкинули очередную порцию вандализма,
и часть смысла всего этого потерялась.

Отредактировано Dumby (10-12-2017 23:43:30)

Отсутствует

 

№1230014-11-2017 20:15:33

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 56.0

Re: Custom Buttons

Dumby пишет

А затем подкинули очередную порцию вандализма,
и часть смысла всего этого потерялась.

Удивительное сочетание разумно-запоздалого и шаловливых ручек.
А могли бы и get/setCharPref() упороть, я вот сходу не вижу, что бы сломалось, начни он вдруг работать с юникодом (кроме разве что мизерной потери производительности).


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]