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

Пользователи не любят читать документацию. Станьте оригинальным, будьте не как все. Ознакомьтесь с нашей базой знаний.

№707631-10-2013 21:47:54

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

Re: Custom Buttons

Наверно букмарклет меняет цвет выделения на открытой странице.

Отсутствует

 

№707731-10-2013 22:18:18

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

Re: Custom Buttons

bunda1 пишет

Наверно букмарклет меняет цвет выделения на открытой странице.

У меня это получается со всеми букмарклетами, которые открывают вкладку (или окно, без разницы).
Вот простейший букмарклет, что тут может менять цвет выделения?

Выделить код

Код:

javascript:(function(){ function htmlEscape(s){s=s.replace(/&/g,'&amp;');s=s.replace(/>/g,'&gt;');s=s.replace(/</g,'&lt;');return s;} x=window.open(); x.document.write('<pre>' + htmlEscape('<html>\n' + document.documentElement.innerHTML + '\n</html>')); x.document.close(); })();

Отсутствует

 

№707831-10-2013 22:57:01

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

Re: Custom Buttons

Да, букмарклет не должен ничего менять. Интересно :/ но у меня этот букмарклет тоже меняет цвет выделения на серый.

Отсутствует

 

№707931-10-2013 23:34:06

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

Re: Custom Buttons

rbfyec пишет

Почему у меня на странице, открытой букмарклетом, выделение видно серым цветом?

Видимо, фокус не на странице, а где-то еще, например, в адресной строке.


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

Отсутствует

 

№708031-10-2013 23:45:05

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

Re: Custom Buttons

Infocatcher пишет

Видимо, фокус не на странице, а где-то еще, например, в адресной строке.

У меня тоже эта мысль была. Но я специально щёлкал на странице, чтобы переместить на неё фокус.

Я заметил, что серое выделение получается с букмарклетами, где идёт window.open(), а потом document.write()

Совпадение?

Отсутствует

 

№708131-10-2013 23:51:59

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

Re: Custom Buttons

rbfyec
Можно попробовать добавить вызов window.focus() в конце.


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

Отсутствует

 

№708201-11-2013 00:12:18

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

Re: Custom Buttons

Infocatcher пишет

Можно попробовать добавить вызов window.focus() в конце.

Это я уже пробовал. Не помогает.

Я запускаю на странице код через FireGestures:

Выделить код

Код:

alert(content.document.activeElement.nodeName)

И он показывает Body. Значит, фокус на теле страницы?

Отсутствует

 

№708303-11-2013 20:33:09

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 25.0
Веб-сайт

Re: Custom Buttons

bunda1 пишет

Караул :o, заметил глюк на FF24 + custombuttons-0.0.5.7pre1-20130923
Если в кнопке которое открывает меню есть строка this.type = "menu-button" код кнопки инициализируется два раза и все обработчики дублируются.

Попробуйте новую сборку custombuttons-0-0-5-7pre2-20131103


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№708405-11-2013 13:58:44

Ferguss114
Участник
 
Группа: Members
Зарегистрирован: 31-03-2012
Сообщений: 207
UA: Firefox 22.0

Re: Custom Buttons

Как можно передать в функцию свои аргументы

Выделить код

Код:

function rgbToHex(r, g, b) {
        var rgb = b | (g << 8) | (r << 16);
       return ((b | g << 8 | r << 16) / 0x1000000).toString(16).substring(2);
    }

если они у меня в виде rgb(111, 222, 333) и они меняются?

Отсутствует

 

№708505-11-2013 16:43:06

Ferguss114
Участник
 
Группа: Members
Зарегистрирован: 31-03-2012
Сообщений: 207
UA: Firefox 25.0

Re: Custom Buttons

Сорри если не сумел сформулировать :lol:

Короче получилась у меня функция

Выделить код

Код:

var bgColor=window.getComputedStyle(myElm, '').backgroundColor;

function rgbToHex(r, g, b) {
        var rgb = b | (g << 8) | (r << 16);

  return ((b | g << 8 | r << 16) / 0x1000000).toString(16).substring(2);
    }

var r=bgColor.match(/[0-9]+/g)[0];
var g=bgColor.match(/[0-9]+/g)[1];
var b=bgColor.match(/[0-9]+/g)[2];
rgbToHex(r, g, b)

Работает, но если фона под myElm нет, то выдаёт ошибку. Что надо добавить?

Отсутствует

 

№708605-11-2013 17:38:58

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 25.0
Веб-сайт

Re: Custom Buttons

Ferguss114 пишет

Как можно передать в функцию свои аргументы

Выделить код

Код:

function rgbToHex(r, g, b) {
        var rgb = b | (g << 8) | (r << 16);
       return ((b | g << 8 | r << 16) / 0x1000000).toString(16).substring(2);
    }

если они у меня в виде rgb(111, 222, 333) и они меняются?

Тут просто eval просится:

Выделить код

Код:

function rgb (r, g, b) {
    return ((b | g << 8 | r << 16) / 0x1000000). toString (16). substring (2);
}
var s = "rgb(111,222,333)";
var r = eval (s);

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№708705-11-2013 18:03:11

Ferguss114
Участник
 
Группа: Members
Зарегистрирован: 31-03-2012
Сообщений: 207
UA: Firefox 22.0

Re: Custom Buttons

Anton пишет:

Тут просто eval просится:

Выделить код

Код:

function rgb (r, g, b) {
    return ((b | g << 8 | r << 16) / 0x1000000). toString (16). substring (2);
}
var s = "rgb(111,222,333)";
var r = eval (s);

Что-то у меня это не идёт... Если я вызываю функцию

Выделить код

Код:

rgb (111,222,333)

то работает, но если

то получаю null.

А как всё же сделать в этой конструкции, чтобы при отсутствии фона не давало ошибку?

Отредактировано Ferguss114 (05-11-2013 18:23:14)

Отсутствует

 

№708805-11-2013 18:10:46

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 25.0
Веб-сайт

Re: Custom Buttons

Ferguss114 пишет

но если

то получаю null.

А вы не вызывайте функцию rgb. Пусть её eval вызывает.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№708905-11-2013 20:29:13

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

Re: Custom Buttons

Anton пишет
bunda1 пишет

Караул :o, заметил глюк на FF24 + custombuttons-0.0.5.7pre1-20130923
Если в кнопке которое открывает меню есть строка this.type = "menu-button" код кнопки инициализируется два раза и все обработчики дублируются.

Попробуйте новую сборку custombuttons-0-0-5-7pre2-20131103

Спасибо, вроде теперь работает как надо. Правда кнопки с this.type = "menu-button" теперь инициализируется при старте три раза но это мелочь.
Заметил другой глюк - если после старта браузера открыть окошко редактирования кнопки в который столько кода что появляется скролбар и прокрутить код вниз и кликнуть на коде правым кликом то код сам покрутится к началу. Эсли потом кликать правым то глюка не будет.

Отсутствует

 

№709005-11-2013 20:58:13

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

Re: Custom Buttons

bunda1
Есть у меня такая кнопка переключения прокси

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

Выделить код

Код:

var trtext;
var ctabpos;
var mainicon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAElBMVEUA/wAAAACIiIjd3d2AgID///9WXziYAAAAAXRSTlMAQObYZgAAAFRJREFUeF4tydERgCAMBNFABUQr8KjAXAcODTD034s5cb/ezJohs6wuMpow3X8MTeH5prBnXTHHEIAN+LHRGSQFBLJcgGfTindml1lO3qcAJRTP2gv/MBEl7nzAMAAAAABJRU5ErkJggg==";
//------------------------Page context menu-------------------------------------------------  
(function UseAsProxy(){
const kXULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";

    var contextMenu = document.getElementById("contentAreaContextMenu");
    var separator = document.getElementById("context-viewsource");
    var eventTarget = null;
    var menu = document.createElementNS(kXULNS, "menu");
    menu.id = "UseAsProxy";
    menu.setAttribute("label", "Прокси");
    menu.setAttribute("class", "menu-iconic");
    menu.setAttribute("image", mainicon);
    menu.hidden = true;
    contextMenu.insertBefore(menu, separator );
    var menuPopup = document.createElementNS(kXULNS, "menupopup");
    menu.appendChild(menuPopup);
var lst = [
       {
         label:"Адрес Прокси",
         command: proxyadres,
         image:mainicon
        },
         {
          label:"Порт Прокси",
          command:proxyport,
          image:mainicon
          }
        ];
   
for(var i = 0, m; m = lst[i]; i++){
    if (m.label=="separator"){
     var menuItem = document.createElementNS(kXULNS, "menuseparator");
         menuItem.id = "UseAsProxy" + m.label.toString();
        menuPopup.appendChild(menuItem);
    } else {
        var menuItem = document.createElementNS(kXULNS, "menuitem");
        menuItem.setAttribute("label", m.label);
        menuItem.setAttribute("class", "menuitem-iconic");
        menuItem.setAttribute("image", m.image);
        menuItem.setAttribute("type", "m.radio");
        menuItem.addEventListener("command", m.command, false);
        menuItem.id = "UseAsProxy" + m.label.toString();
        menuPopup.appendChild(menuItem);
        }
     }  
    contextMenu.addEventListener("popupshowing", setMenuDisplay, false);
   
function setMenuDisplay(aEvent) {
                 if (gContextMenu.isTextSelected)
                 {
                 var doc = getBrowser (). contentDocument;
                 seltxt = doc. defaultView. getSelection ();
                 trtext=seltxt.toString();
                 ctabpos = gBrowser.mCurrentTab._tPos +1;
                                  document.getElementById("UseAsProxy").hidden = false;
                 }
                 else
                 document.getElementById("UseAsProxy").hidden = true;
                   } 
   

//--------proxyadres--------------
function proxyadres(){
custombuttons.setPrefs("network.proxy.http", trtext);
custombuttons.alertSlide("Установлен адрес прокси:", trtext);

}
//---------proxyport---------------
function proxyport(){
var curset=trtext.replace(/\D*/g,"")
var curset=(+curset);
custombuttons.setPrefs("network.proxy.http_port", curset);
custombuttons.alertSlide("Установлен порт прокси:", curset);
}


})();
this.timer = 0;


this. onmouseover = function (event)
{
var curadr=custombuttons.getPrefs("network.proxy.http")
var curport=custombuttons.getPrefs("network.proxy.http_port")
var curstat=custombuttons.getPrefs("network.proxy.type")
var proxystat
if (curstat==0){proxystat="Выключен";}
else{proxystat="Включен";}
this.tooltipText="Текущие настройки прокси:\n"+"Адрес:"+curadr+"  Порт:"+curport+"\n"+proxystat;
    clearTimeout(this.timer);
};
var curstat=custombuttons.getPrefs("network.proxy.type")
if (curstat==0){
this.checked=false;
this.image='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAElBMVEUA/wAAAACIiIjd3d2AgID///9WXziYAAAAAXRSTlMAQObYZgAAAFRJREFUeF4tydERgCAMBNFABUQr8KjAXAcODTD034s5cb/ezJohs6wuMpow3X8MTeH5prBnXTHHEIAN+LHRGSQFBLJcgGfTindml1lO3qcAJRTP2gv/MBEl7nzAMAAAAABJRU5ErkJggg==';

}else{
this.checked=true;
this.image='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAG1BMVEUA/wCIiIgAAADd3d3///8AAICAAAD/AAAAAP8pkhnQAAAAAXRSTlMAQObYZgAAAF1JREFUeF4tyUERg0AQRNEJDjprAAYFQztYCglYWAlwzi2y053kn17Vj4AK9djJmo3jPP94exqv7zR6prFXvy8D+AG59DGExiJpoKC0gFQ9pmxUzwhNbqsBJ2iq+QNw+RI4rlZUrAAAAABJRU5ErkJggg==';
}
this.onclick = function(event) {
    if(event.button == 0) {
 var curstat=custombuttons.getPrefs("network.proxy.type")
if (curstat==0){
custombuttons.setPrefs("network.proxy.type", 1);
this.checked=true;
this.image='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAG1BMVEUA/wCIiIgAAADd3d3///8AAICAAAD/AAAAAP8pkhnQAAAAAXRSTlMAQObYZgAAAF1JREFUeF4tyUERg0AQRNEJDjprAAYFQztYCglYWAlwzi2y053kn17Vj4AK9djJmo3jPP94exqv7zR6prFXvy8D+AG59DGExiJpoKC0gFQ9pmxUzwhNbqsBJ2iq+QNw+RI4rlZUrAAAAABJRU5ErkJggg==';


}else{
custombuttons.setPrefs("network.proxy.type", 0);
this.checked=false;
this.image='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAElBMVEUA/wAAAACIiIjd3d2AgID///9WXziYAAAAAXRSTlMAQObYZgAAAFRJREFUeF4tydERgCAMBNFABUQr8KjAXAcODTD034s5cb/ezJohs6wuMpow3X8MTeH5prBnXTHHEIAN+LHRGSQFBLJcgGfTindml1lO3qcAJRTP2gv/MBEl7nzAMAAAAABJRU5ErkJggg==';


}   
}
}


и твоя кнопка Proxy
http://forum.mozilla-russia.org/viewtop … 77#p484977
Первой удобно прокси из контекстного вставлять, а твоей открываю окно настроек прокси, можно в первую на СКМ или ПКМ добавить открытие окна настроек прокси из твоей, или наоборот в твою добавить вставку прокси из контекстного, чтобы две кнопки не держать.

Отредактировано villa7 (05-11-2013 21:00:57)


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

Отсутствует

 

№709105-11-2013 20:59:18

Ferguss114
Участник
 
Группа: Members
Зарегистрирован: 31-03-2012
Сообщений: 207
UA: Firefox 25.0

Re: Custom Buttons

Спасибо всем, вроде разобрался :)

Отсутствует

 

№709205-11-2013 21:37:14

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

Re: Custom Buttons

villa7 пишет

bunda1
Есть у меня такая кнопка переключения прокси

Посмотрю на этой неделе.

Отсутствует

 

№709305-11-2013 22:07:46

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

Re: Custom Buttons

bunda1
Спасибо.


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

Отсутствует

 

№709405-11-2013 23:45:14

Xant1k
Забанен
 
Группа: Members
Зарегистрирован: 22-10-2011
Сообщений: 49
UA: Opera 17.0
Веб-сайт

Re: Custom Buttons

del

Отредактировано Xant1k (11-02-2017 13:58:01)

Отсутствует

 

№709507-11-2013 13:17:49

Чайник
Участник
 
Группа: Members
Зарегистрирован: 15-04-2008
Сообщений: 268
UA: Firefox 22.0

Re: Custom Buttons

Infocatcher пишет
Чайник пишет

Первым параметром родителя, правильно? А третьим параметром что - class? или anonid (если он есть)?

Это не совсем родитель, если уж на то пошло. Анонимные узлы в DOM Inspector'е подсвечены красным, а нужен ближайший не анонимный родитель. Атрибут может быль любой, просто принято использовать anonid.
https://developer.mozilla.org/en-US/doc … yAttribute

Parameters
    elt - The element to retrieve anonymous children for.
    attrName - The attribute name to look up.
    attrValue - The attribute value to match.

Infocatcher, я обрадовался, что вроде понял принцип как получить анонимный узел. Оказалось рано радовался.

Почему у меня не выходит получить 
b7f5e039e34560728276e8d323884cf2.png

В DOM Inspector'е видно, что ближайший не анонимный родитель — это searchbar.
И вот если я пишу

Выделить код

Код:

document.getAnonymousElementByAttribute(document.getElementById("searchbar"), "anonid", "textbox-input-box")

то получаю null.

ЧЯДНП?

Отсутствует

 

№709607-11-2013 13:27:57

2k1dmg
Участник
 
Группа: Members
Зарегистрирован: 06-04-2011
Сообщений: 190
UA: Firefox 25.0

Re: Custom Buttons

Чайник

Выделить код

Код:

document.getAnonymousElementByAttribute(document.getElementById("searchbar").textbox, "anonid", "textbox-input-box")

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

Выделить код

Код:

// http://forum.mozilla-russia.org/viewtopic.php?id=53319

// Searchbar Cleaner button for Custom Buttons
// (code for "initialization" section)

// (c) bunda1
// version 0.0.1 - 2012-01-16

// mod 0.0.3 - 2013-11-07 2k1dmg

"use strict";

var cb_searchbarCleaner = {
    options: {
        defaultEngine: false,
        clearOnBlur: false
    },
    clearBar: function(event) {
        var sb = cb_searchbarCleaner.sb;
        if (event.type == "blur" && !cb_searchbarCleaner.options.clearOnBlur) {
            return;
        }
        setTimeout(function() {
            sb.value = "";
            if (cb_searchbarCleaner.options.defaultEngine) {
                sb.currentEngine = sb.engines ? sb.engines[0] : sb._engines[0];
            }
        }, 500);
    },
    clearFunc: function(event) {
        var sb = cb_searchbarCleaner.sb;
        if (event.keyCode == KeyEvent.DOM_VK_RETURN) {
            cb_searchbarCleaner.clearBar(event);
        }
    },
    clearFuncBut: function(event) {
        if (event.button == 0 || event.button == 1) {
            cb_searchbarCleaner.clearBar(event);
        }
    },
    init: function() {
        cb_searchbarCleaner.sb = document.getElementById("searchbar");
        this.sb.addEventListener("blur", this.clearBar, true);
        this.sb.addEventListener('keydown', this.clearFunc, true);
        document.getAnonymousElementByAttribute(this.sb, "anonid", "search-go-button").addEventListener("click", this.clearFuncBut, true);
        var inputBox = document.getAnonymousElementByAttribute(this.sb.textbox, "anonid", "textbox-input-box");
        document.getAnonymousElementByAttribute(inputBox, "anonid", "paste-and-search").addEventListener("click", this.clearBar, true);
    },
    uninit: function() {
        this.sb.removeEventListener("blur", this.clearBar, true);
        this.sb.removeEventListener('keydown', this.clearFunc, true);
        document.getAnonymousElementByAttribute(this.sb, "anonid", "search-go-button").removeEventListener("click", this.clearFuncBut, true);
        var inputBox = document.getAnonymousElementByAttribute(this.sb.textbox, "anonid", "textbox-input-box");
        try {
            document.getAnonymousElementByAttribute(inputBox, "anonid", "paste-and-search").removeEventListener("click", this.clearBar, true);
        } catch (ex) {}
    },
    destroy: function() {
        this.uninit();
    },
    destructor: function(reason) {
        this.destroy();
    }
};
cb_searchbarCleaner.init();
if (typeof addDestructor == "function" &&  // userChromeJS/uc
    addDestructor != ("addDestructor" in window && window.addDestructor)) {
    let _this = cb_searchbarCleaner;
    addDestructor(_this.destructor, _this);
}

Отредактировано 2k1dmg (07-11-2013 14:02:32)

Отсутствует

 

№709707-11-2013 14:05:31

Чайник
Участник
 
Группа: Members
Зарегистрирован: 15-04-2008
Сообщений: 268
UA: Firefox 22.0

Re: Custom Buttons

2k1dmg, кнопка это конечно хорошо, но я хотел бы ответ на свой вопрос: почему у меня не выходит получить анонимный элемент?

Отсутствует

 

№709807-11-2013 16:21:32

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

Re: Custom Buttons

Чайник
Проблема в том, что нужный узел определен в binding'e для (анонимного) textbox.searchbar-textbox, а не #searchbar. И в таком случае подсветка красным уже не помогает.
Настоящего родителя можно узнать через getBindingParent(): в DOM Inspector'e можно справа выбрать «Объект JavaScript», в контекстном меню корневого узла вызвать «Вычислить JavaScript» и там уже выполнить что-нибудь вроде

Выделить код

Код:

var p = target.ownerDocument.getBindingParent(target);
alert(p.nodeName + (p.id ? "#" + p.id : "") + (p.className ? "." + p.className.split(/\s+/).join(".") : ""));

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

Отсутствует

 

№709907-11-2013 17:41:38

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

Re: Custom Buttons

Чайник Попробуй так, у меня так добавлена кнопка(menuItem).
   var searchbar = document.getElementById("searchbar");
   var it = document.getAnonymousElementByAttribute(searchbar, "anonid", "searchbar-textbox");
   var im = document.getAnonymousElementByAttribute(it, "anonid", "textbox-input-box");
   var go = im.lastChild;
   im.insertBefore(menuItem, go);

Отсутствует

 

№710007-11-2013 20:18:06

Чайник
Участник
 
Группа: Members
Зарегистрирован: 15-04-2008
Сообщений: 268
UA: Firefox 22.0

Re: Custom Buttons

Infocatcher,
Спасибо большое! :)


Andrey_Krropotkin, спасибо за код кнопки.
После того как  Infocatcher разжевал,  стало ясно, почему в коде так, а не иначе.

Отсутствует

 

Board footer

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