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

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№657605-07-2013 19:37:01

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Custom Buttons

Вопрос знающим людям, можно ли имитировать переключение настроек в about:config?
Браузер должен думать что настройки переключены.

Отсутствует

 

№657705-07-2013 19:42:42

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

Re: Custom Buttons

bunda1 пишет

Браузер должен думать что настройки переключены.

Только если сам браузер добавил наблюдателя (nsIPrefBranch.addObserver()/nsIPrefBranch2.addObserver()) за изменениями настроек, но тогда ничего специально делать не надо.
В противном случае можно только вручную запустить обновление состояния в зависимости от настройки (то есть для каждой настройки надо отдельно писать уникальный код).


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

Отсутствует

 

№657805-07-2013 20:13:04

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Custom Buttons

Infocatcher пишет

Только если сам браузер добавил наблюдателя

Мне нужно имитировать переключение настроек, но не переключать на самом деле, потому что их надо переключать быстро. Речь о ui.textHighlightBackground
Как тут может помочь наблюдатель?

Отредактировано bunda1 (05-07-2013 20:13:32)

Отсутствует

 

№657905-07-2013 22:47:39

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

Re: Custom Buttons

Что именно нужно имитировать? Эффект от переключения настройки, но без переключения настройки?
Тогда нужно найти код, отвечающий за отслеживание изменения настройки и вызвать его (или сделать то же, что и он). Только я не думаю, что будет большая разница в быстродействии.


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

Отсутствует

 

№658005-07-2013 22:56:58

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Custom Buttons

Понятно, попробую тогда найти код, отвечающий за отслеживание изменения настройки и поэкспериментирую. Спасибо.

Отсутствует

 

№658107-07-2013 03:33:52

Kiril__777
Участник
 
Группа: Members
Зарегистрирован: 13-07-2009
Сообщений: 393
UA: Firefox 20.0

Re: Custom Buttons

bunda1 пишет

customize.parentNode.appendChild( menu );

Помогло спасибо.
В ваше меню заменил

Выделить код

Код:

alert('addSel');

на

Выделить код

Код:

window.open('http://www.google.com/search?q=cache:'+location.href)

В итоге открывается новое окно, и это не смотря на настройки TMP, как быть если нужно чтобы открывалась вкладка?
Спасибо

Отредактировано Kiril__777 (07-07-2013 03:34:11)

Отсутствует

 

№658207-07-2013 03:47:22

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Custom Buttons

Kiril__777 пишет

как быть если нужно чтобы открывалась вкладка?

Выделить код

Код:

gBrowser.selectedTab = gBrowser.addTab("http://www.google.com/search?q=cache:" + content.location );

Отсутствует

 

№658307-07-2013 04:09:27

Kiril__777
Участник
 
Группа: Members
Зарегистрирован: 13-07-2009
Сообщений: 393
UA: Firefox 20.0

Re: Custom Buttons

bunda1
А разделитель как добавить? :D

Выделить код

Код:

{ label:"separator" },

не работают :(

Отсутствует

 

№658407-07-2013 04:39:07

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Custom Buttons

Kiril__777 пишет

А разделитель как добавить?

Выделить код

Код:

{ separator: '' },

и

Выделить код

Код:

array.forEach(function( m ) {
     if ( "separator" in m ) { menuPopup.appendChild( document.createElement("menuseparator") ); return };
     var mItem = document.createElement("menuitem");

Отсутствует

 

№658507-07-2013 04:58:43

Kiril__777
Участник
 
Группа: Members
Зарегистрирован: 13-07-2009
Сообщений: 393
UA: Firefox 20.0

Re: Custom Buttons

bunda1
Безмерно благодарен :beer:

Отсутствует

 

№658608-07-2013 10:38:36

Kiril__777
Участник
 
Группа: Members
Зарегистрирован: 13-07-2009
Сообщений: 393
UA: Firefox 20.0

Re: Custom Buttons

как правильно перенести это

Выделить код

Код:

["Поиск по текущему сайту", function(){var getSel=function(w){var s,d=w.document;if(d.selection){var r=d.selection.createRange();s=r?r.text:''}else{s=d.getSelection().toString();if(!s){var e,t=d.getElementsByTagName('textarea'),u=d.getElementsByTagName('input'),i=t.length;while(e=(i>0)?t[--i]:u[-i--])try{if(e.offsetHeight>0&&(s=e.value.substring(e.selectionStart,e.selectionEnd)))break}catch(x){}}};if(!s)for(var j=0,f;f=w.frames[j];j++){try{if(s=getSel(f))break}catch(x){}};return s};var w=window,s=w.prompt('Поиск на этом сайте с помощью Google',getSel(w));if(s){w.open('http://www.google.com/search?as_q='+encodeURIComponent(s)+'&as_sitesearch='+w.location.hostname)}}],

в горизонтальное субменю ?
Спасибо

Отсутствует

 

№658708-07-2013 16:00:36

Kiril__777
Участник
 
Группа: Members
Зарегистрирован: 13-07-2009
Сообщений: 393
UA: Firefox 20.0

Re: Custom Buttons

Скажите, а вот эта кнопка все еще работает на фф 20.0.1 ?

Отсутствует

 

№658809-07-2013 21:36:35

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Custom Buttons

Kiril__777 пишет

как правильно перенести это.....

Поменяй:

Выделить код

Код:

function searchToSite() {
      alert('searchToSite');
   };

на

Выделить код

Код:

function searchToSite() {
        var text = escape( convertFromUnicode ("UTF-8", document.commandDispatcher.focusedWindow.getSelection().toString() ) );
        var searchUrl = "http://www.google.com/search?as_q=" + text + "&as_sitesearch=" + encodeURIComponent( gBrowser.currentURI.host );
        gBrowser.selectedTab = gBrowser.addTab( searchUrl );
        };

Добавлено 09-07-2013 21:37:12

Kiril__777 пишет

Скажите, а вот эта кнопка все еще работает на фф 20.0.1 ?

А зачем тебе?

Отредактировано bunda1 (09-07-2013 21:37:12)

Отсутствует

 

№658910-07-2013 02:58:09

Kiril__777
Участник
 
Группа: Members
Зарегистрирован: 13-07-2009
Сообщений: 393
UA: Firefox 20.0

Re: Custom Buttons

bunda1 пишет

Поменяй:

Хорошо и так сойдет! :)

bunda1 пишет

А зачем тебе?

Хотел сделать кнопку "Автономный режим Вкл/Откл", у меня так было в [opera]. Ну и еще чего-нибудь что смогу прикрепить.

Отсутствует

 

№659010-07-2013 21:26:11

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Custom Buttons

Kiril__777 пишет

Хотел сделать кнопку "Автономный режим Вкл/Откл", у меня так было в [opera]. Ну и еще чего-нибудь что смогу прикрепить.

Вот образец кнопки для переключения настроек:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%u0417%u0430%u0433%u0440%u0443%u0436%u0430%u0442%u044C%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u044F%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0430%u0445%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAAsSAAALEgHS3X78AAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACp0lEQVR42mL4//8/g3zm6f8AAcQAYvz4uuc/QACBeSAOQAAx/P75/X/ukY//AQIILHXhz///lZe//wfJAgQQWOBui9D/P78t/6ftffcfIIAYYKbA9AIEEIjDWnPtx3+YIEAAMXz7/P7/75+v/mcADQQJAAQQ0HTt/y9nqv73W/caLAAQQDAzWC8CbWq89et//fWf/5HNBAgguIJzIKdc+v6/7Py3/8Wnv/wvPPkZrAgggMAKfv+c8P/f+8r//x+mAZ03/X/g5nf/sw68BysACCCIH78p///zSeb/n4ci/39d4P+/4+f//0d//QcrAAggFH8gY5A4CAMEEFxB0+1f/xtu/vxfc+X7f5CDYYoAAgiuoP7Gz//VV378r7j4HdkkVoAAgisA6Sy/8O1/ydmvYB+c+g02hRUggBgaw6T+g4Iegq//B/Fzj376fwLiSFaAAAIr+HI17f//l4X//9+JAyvIPPjh/3GoAoAAAit4MEns/71Gof+f1hmCFaQCownqTVaAAAIr+PNb4f+fFxL//9wUACsAScIUAAQQA8y/IA7IsSAvgvAFKD4PxdjCCIQBAgjDgAvQSK0DRmrtNWDQXAUFzTewxjNAn5/8/R/FIIAAwjAAZFsdMEFVAcMUFPkgzaAEUAoKvlOfkYMQ7AWAAAJrBvmLEC4Aasw/DsTHPiG7ghUggOAG/PkFTCG/p/3//6P///+PLf//vwamrsc5///+WQc2IHLX+//Zhz/+zz4EjwKwAQABBDfg90/d/w+mSvx/DEztPy+G//9/K/r//6vBwBhoBhvgv/HN//T97/9n7Hv//xiSAQABhDDgl8b/B33C/++3C/6/38T//34d7//7Vdz//0Kjzm/dq/9pe979T939Fp6UQQYABBDRYSAZdghrkgcIMAD5xMj+kGsEXgAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20button%20%3D%20this%3B%0Avar%20s%20%3D%20%27permissions.default.image%27%3B%0Avar%20pref%20%3D%20Application.prefs.get%28s%29%3B%0A%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20pref.value%20%3D%20%28pref.value%20%3D%3D%20%221%22%29%20%3F%202%20%3A%201%3B%0A%7D%3B%0A%20%0Afunction%20toggleImage%28%29%20%7B%20%0A%20%20%20var%20icon%20%3D%20button.ownerDocument.getAnonymousElementByAttribute%28%20button%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0A%20%20%20icon.src%20%3D%20%28pref.value%20%3D%3D%20%271%27%29%20%0A%20%20%20%3F%20button.image%20%0A%20%20%20%3A%20%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAA3NCSVQICAjb4U/gAAAAD1BMVEUfact50/fF+v/M//////8mt18DAAAABXRSTlP/////APu2DlMAAAAJcEhZcwAACvAAAArwAUKsNJgAAAAgdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIE1Yu5EqJAAAADhJREFUeJxjcHFgAAIXFwYXB2NjYwYWEMNQUJCZAcYwYIEwGBigDEFhDIYQ+QygpUZKIAbIGQwsANX+EGaBLn8yAAAAAElFTkSuQmCC%27%3B%0A%7D%3B%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28%20s%2C%20toggleImage%2C%20false%20%29%3B%0AaddDestructor%28function%28%29%20%7B%20gPrefService.removeObserver%28%20s%2C%20toggleImage%2C%20false%20%29%20%7D%29%3B%20%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Отсутствует

 

№659110-07-2013 22:24:25

Lex1
Участник
 
Группа: Members
Зарегистрирован: 07-07-2007
Сообщений: 260
UA: Firefox 22.0

Re: Custom Buttons

А как поменять внешний вид кнопки - для нажатой изменить вид на обычный? Нужно это для обработки долгого нажатия, которое относительно удобно если кнопка используется для пары действий и второе является усилением первого, скажем переход на один уровень и в конец или сохранение - быстрое и с выбором папки.

Набросок реализован следующим образом:

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

Выделить код

Код:

var btn = this;

var obj = {
    timerId: 0,
    isPressed: false,
    longClick: function(){
        goUp(false);
    },
    stdClick: function(){
        goUp(true);
    }
};

function mouseDown(e){
    if(e.button == 0){
        obj.isPressed = true;
        obj.timerId = setTimeout(function(){
            if(obj.isPressed){
                obj.isPressed = false;
                obj.longClick();
            }
        }, 500);
    }
};

function mouseUp(e){
    if(e.button == 0){
        clearTimeout(obj.timerId);
        if(obj.isPressed){
            obj.isPressed = false;
            obj.stdClick();
        }
    }
};

function mouseOut(e){
    if(e.button == 0){
        obj.isPressed = false;
    }
};

btn.addEventListener('mousedown', mouseDown, false);
btn.addEventListener('mouseup', mouseUp, false);
btn.addEventListener('mouseout', mouseOut, false);

btn.onDestroy = function(){
    btn.removeEventListener('mousedown', mouseDown, false);
    btn.removeEventListener('mouseup', mouseUp, false);
    btn.removeEventListener('mouseout', mouseOut, false);
};


function goUp(step){
    var loc = content.location;

    var p = loc.protocol + '//', h = loc.host + '/';
    if (loc.href == p + h) {
        var a = h.split('.'), l = a.length, n = 2;
        if (l > 2) {
            if (a[0] == 'www') {a.shift(); l--};
            if (/^(co|com|net|org|edu|gov|mil|int)$/i.test(a[l - 2])) n++
        }
        if (l > n) {
            h = (n == 3 ? a[l - 3] + '.' : '') + a[l - 2] + '.' + a[l - 1]
        } else {
            p = 'http://www.google.com/search?sourceid=opera&q=related:' + p
        }
    } else if (step) {
        h = loc.host + loc.pathname.replace(/[^\/]+\/?$/, '')
    };
    loc.href = p + h;
};


И перед obj.longClick(); хотелось бы изменить вид нажатой кнопки.

Отсутствует

 

№659211-07-2013 06:44:42

Kiril__777
Участник
 
Группа: Members
Зарегистрирован: 13-07-2009
Сообщений: 393
UA: Firefox 20.0

Re: Custom Buttons

bunda1
Вы просто мастер в написании и редактировании кнопок :)
Только вот уточните, а что если для изменяемого параметра есть 2 значения  false и true. Как должен выглядеть ваш код, так?

Выделить код

Код:

this.onclick = function(e) {
    if ( e.button == 0 ) pref.value = (pref.value == "true") ? false : true;
};

Отсутствует

 

№659311-07-2013 19:31:38

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Custom Buttons

Kiril__777 пишет

Только вот уточните, а что если для изменяемого параметра есть 2 значения  false и true. Как должен выглядеть ваш код, так?

Выделить код

Код:

this.onclick = function(e) {
    if ( e.button == 0 ) pref.value = (pref.value == "true") ? false : true;
};

Можно и так, но лучше:

Выделить код

Код:

var button = this;
var s = 'dom.ipc.plugins.enabled';
var pref = Application.prefs.get(s);

this.onclick = function(e) {
    if ( e.button == 0 ) pref.value = !pref.value;
};
 
function toggleImage() { 
   var icon = button.ownerDocument.getAnonymousElementByAttribute( button, "class", "toolbarbutton-icon");
   icon.src = pref.value 
   ? button.image 
   : 'chrome://mozapps/skin/plugins/notifyPluginBlocked.png';
};
toggleImage();
gPrefService.addObserver( s, toggleImage, false );
addDestructor(function() { gPrefService.removeObserver( s, toggleImage, false ) });

Отсутствует

 

№659413-07-2013 04:09:50

Kiril__777
Участник
 
Группа: Members
Зарегистрирован: 13-07-2009
Сообщений: 393
UA: Firefox 20.0

Re: Custom Buttons

bunda1
:beer:

Отсутствует

 

№659513-07-2013 21:58:17

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1008
UA: Firefox 22.0

Re: Custom Buttons

Подскажите код, что бы при нажатии СКМ по этой кнопке:

скрытый текст
0f37b396feab.jpg

выполнялся ее первый пункт "Проверить наличие обновлений"

Отсутствует

 

№659614-07-2013 00:22:12

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

Re: Custom Buttons

Inko7 пишет

Подскажите код, что бы при нажатии СКМ по этой кнопке ...

Выделить код

Код:

addEventListener("click", function(e) {
    var trg = e.target;
    if(
        trg.id == "header-utils-btn"
        && trg.ownerDocument.documentURI == "about:addons"
    )
        trg.ownerDocument.getElementById("utils-updateNow").doCommand();
}, true);

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

Отсутствует

 

№659714-07-2013 09:51:03

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1008
UA: Firefox 22.0

Re: Custom Buttons

Infocatcher
спасибо, все работает!

Отсутствует

 

№659815-07-2013 17:44:08

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

Re: Custom Buttons

Lex1 пишет

А как поменять внешний вид кнопки - для нажатой изменить вид на обычный? Нужно это для обработки долгого нажатия, которое относительно удобно если кнопка используется для пары действий и второе является усилением первого, скажем переход на один уровень и в конец или сохранение - быстрое и с выбором папки.

С inIDOMUtils.addPseudoClassLock() & Co у меня ничего не получилось, но можно сделать что-нибудь вроде такого:

Выделить код

Код:

obj.isPressed = false;

                var k = "_transitionTimer";
                if(k in btn)
                    clearInterval(btn[k]);
                var stl = btn.style;
                stl.setProperty("transition", "opacity 150ms ease-in-out", "important");
                btn[k] = setTimeout(function() {
                    stl.setProperty("opacity", "0.5", "important");
                    btn[k] = setTimeout(function() {
                        stl.opacity = "";
                        btn[k] = setTimeout(function() {
                            stl.transition = "";
                            delete btn[k];
                        }, 150);
                    }, 150);
                }, 0);

                obj.longClick();

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

Отсутствует

 

№659915-07-2013 21:29:46

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

Re: Custom Buttons

А есть такой код чтобы новые вкладки открывались слева от текущей, а не справа, не ради любопытства нужно.


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

Отсутствует

 

№660016-07-2013 11:49:30

firepox
Участник
 
Группа: Members
Зарегистрирован: 17-11-2011
Сообщений: 358
UA: Firefox 22.0

Re: Custom Buttons

Нужна помощь:
Этой кнопкой создавал кнопки-ярлыки для сайтов:

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

Выделить код

Код:

/*CODE*/
var doc = getBrowser (). contentDocument;
var title = doc. title;
var pageURI = makeURI (doc. location. href, null, null);
var iconData = getFaviconData (pageURI);
custombuttons. cloneButton (this);
var newButtonLink = custombuttons. makeButtonLink ("update", this. nextSibling. id);
var params = custombuttons. cbService. getButtonParameters (newButtonLink). wrappedJSObject;
params. image = iconData;
params. name = title;
params. code = "getBrowser (). selectedTab = getBrowser (). addTab (\"" + doc. location. href + "\");";
params. wrappedJSObject = params;
custombuttons. cbService. installButton (params);
function makeURI (aURL, aOriginCharset, aBaseURI)
{
    var ioService = Components. classes["@mozilla.org/network/io-service;1"].
            getService (Components. interfaces. nsIIOService);
    return ioService. newURI (aURL, aOriginCharset, aBaseURI);
}
function getFaviconData (pageURI)
{
    var fis = Components. classes ["@mozilla.org/browser/favicon-service;1"].
          getService(Components.interfaces.nsIFaviconService);
    var iconURL /*= fis. getFaviconForPage (pageURI)*/;
    
    try
    {
        iconURL = fis. getFaviconForPage (pageURI);
    } catch (e) {}
    if (iconURL)
    
    return fis. getFaviconDataAsDataURL (iconURL);
    return "";
}

var elt = document. getAnonymousElementByAttribute (this, "class", "toolbarbutton-icon");
elt. style. height = "16px";
elt. style. width = "16px";


клик и появилась кнопка сайта с иконкой.
сейчас же, вместо иконки "желтая звездочка" - как исправить?

версия браузера - 22.0

спасибо.

Отсутствует

 

Board footer

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