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

В мире Mozilla происходит много интересных событий. Но вам не нужно постоянно посещать новостные сайты, чтобы быть в курсе всех изменений. Зайдите на ленту новостей Mozilla Россия.

№447601-08-2012 01:53:26

SendAbuse
Участник
 
Группа: Members
Зарегистрирован: 08-03-2012
Сообщений: 113
UA: Firefox 11.0

Re: Custom Buttons

Infocatcher,  BRILLIANT !!! Ты - гений компетентности !
Большое спасибо  :beer:

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

Выделить код

Код:

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%3ECustomPaste%20for%20CustomButtons%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//rq7///////////////////////9eXv////////////9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7/////////////////////////////Xl7/////////////Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e/////////////15e//9eXv//Xl7//15e/////////////15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv////////////9eXv//Xl7//15e//9eXv////////////////////////////+urv//Xl7//15e//9eXv//Xl7/////////////Xl7//15e//9eXv//Xl7/////////////3Nz//9jY/////////////15e//9eXv//Xl7//15e/////////////15e//9eXv//Xl7//15e/////////////15e//9eXv////////////9eXv//Xl7//15e//9eXv////////////////////////////9eXv/////////////c3P//2Nj/////////////Xl7//15e//9eXv//Xl7//66u////////////////////////Xl7/////////////////////////////rq7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ%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%20theSeparator%20%3D%20%22%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%22%3B%0A%0Aconst%20cursorIndex%20%3D%20%22%60%22%3B%0A%0Aconst%20insertButtonImage%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%20%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABfV1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/8AAABfV1dX/wAAACsAAAArAAAAKwAAACsAAAArAAAAKwAAACsAAAArAAAAKwAAACsAAAArAAAAKwAAACsAAAArV1dX/1dXV/8AAAArAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK1dXV/9XV1f/AAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACtXV1f/V1dX/wAAACsAAAAA/////////////////////wAAAAD//////////wAAAAAAAAAAAAAAAAAAAAAAAAArV1dX/1dXV/8AAAAr//////////////////////////8AAAAA//////////8AAAAAAAAAAAAAAAAAAAAAAAAAK1dXV/9XV1f/AAAAK///////////AAAAAAAAAAAAAAAAAAAAAP//////////AAAAAAAAAAAAAAAAAAAAAAAAACtXV1f/V1dX/wAAACv//////////wAAAAAAAAAAAAAAAAAAAAD//////////////////////////wAAAAAAAAArV1dX/1dXV/8AAAAr//////////8AAAAAAAAAAAAAAAAAAAAA//////////8AAAAAAAAAAP//////////AAAAK1dXV/9XV1f/AAAAK///////////AAAAAAAAAAAAAAAAAAAAAP//////////AAAAAAAAAAD//////////wAAACtXV1f/V1dX/wAAACv//////////////////////////wAAAAD//////////wAAAAAAAAAA//////////8AAAArV1dX/1dXV/8AAAArAAAAAP////////////////////8AAAAA//////////////////////////8AAAAAAAAAK1dXV/9XV1f/AAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACtXV1f/V1dX/wAAACsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArV1dX/1dXV/8AAAArAAAAKwAAACsAAAArAAAAKwAAACsAAAArAAAAKwAAACsAAAArAAAAKwAAACsAAAArAAAAK1dXV/8AAABfV1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/8AAABfAACsQQAArEE//KxBP/ysQSE8rEEBPKxBDzysQQ8ErEEPMKxBDzCsQQEwrEEhBKxBP/ysQT/8rEEAAKxBAACsQQ%3D%3D%22%3B%0Aconst%20insertButtonImageOnSelf%20%20%20%20%20%20%20%20%3D%20%20%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABfV1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/8AAABfV1dX/wAAACsAAAArAAAAKwAAACsAAAArAAAAKwAAACsAAAArAAAAKwAAACsAAAArAAAAKwAAACsAAAArV1dX/1dXV/8AAAArAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK1dXV/9XV1f/AAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACtXV1f/V1dX/wAAACsAAAAA//////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAArV1dX/1dXV/8AAAArAAAAAP///////////////////////////////////////////////wAAAAAAAAAAAAAAK1dXV/9XV1f/AAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////8AAAAAAAAAAAAAACtXV1f/V1dX/wAAACsAAAAAAAAAAAAAAAD/////////////////////////////////////AAAAAAAAAAAAAAArV1dX/1dXV/8AAAArAAAAAAAAAAD/////////////////////////////////////AAAAAAAAAAAAAAAAAAAAK1dXV/9XV1f/AAAAKwAAAAAAAAAA//////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACtXV1f/V1dX/wAAACsAAAAAAAAAAP//////////////////////////////////////////AAAAAAAAAAAAAAArV1dX/1dXV/8AAAArAAAAAAAAAAAAAAAA/////////////////////////////////////wAAAAAAAAAAAAAAK1dXV/9XV1f/AAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACtXV1f/V1dX/wAAACsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArV1dX/1dXV/8AAAArAAAAKwAAACsAAAArAAAAKwAAACsAAAArAAAAKwAAACsAAAArAAAAKwAAACsAAAArAAAAK1dXV/8AAABfV1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/8AAABfAACsQQAArEE//KxBP/ysQSAcrEEgDKxBP8ysQTgMrEEwHKxBM/ysQTAMrEE4DKxBP/ysQT/8rEEAAKxBAACsQQ%3D%3D%22%3B%0Aconst%20insertButtonBackgroundColor%20%20%20%20%3D%20%20%20%22rgb%280%2C200%2C0%29%22%3B%0Aconst%20insertButtonTooltip%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%20%20%22%u041C%u0430%u043B%u0435%u043D%u044C%u043A%u0430%u044F%20%u0446%u0432%u0435%u0442%u043D%u0430%u044F%20%u043A%u043D%u043E%u043F%u043E%u0447%u043A%u0430%22%3B%0A%0A//%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%0A%0AtheSeparator%20%3D%20%22%5Cn%22%20+%20theSeparator%20+%20%22%5Cn%22%3B%0A%0Avar%20items%20%3D%20this.Help.split%28theSeparator%29%3B%0A%0Avar%20thisCB%20%3D%20this%3B%0A%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0Athis.imageOn%20%3D%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//rq7///////////////////////9eXv////////////9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7/////////////////////////////Xl7/////////////Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e/////////////15e//9eXv//Xl7//15e/////////////15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv////////////9eXv//Xl7//15e//9eXv////////////////////////////+urv//Xl7//15e//9eXv//Xl7/////////////Xl7//15e//9eXv//Xl7/////////////3Nz//9jY/////////////15e//9eXv//Xl7//15e/////////////15e//9eXv//Xl7//15e/////////////15e//9eXv////////////9eXv//Xl7//15e//9eXv////////////////////////////9eXv/////////////c3P//2Nj/////////////Xl7//15e//9eXv//Xl7//66u////////////////////////Xl7/////////////////////////////rq7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7//15e//9eXv//Xl7/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ%3D%3D%22%3B%0A%0Athis.imageOff%20%3D%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACbm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P/JyfD//////////////////////5ub4P///////////5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D///////////////////////////+bm+D///////////+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg////////////m5vg/5ub4P+bm+D/m5vg////////////m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P///////////5ub4P+bm+D/m5vg/5ub4P///////////////////////////8nJ8P+bm+D/m5vg/5ub4P+bm+D///////////+bm+D/m5vg/5ub4P+bm+D////////////o6Pr/5ub6////////////m5vg/5ub4P+bm+D/m5vg////////////m5vg/5ub4P+bm+D/m5vg////////////m5vg/5ub4P///////////5ub4P+bm+D/m5vg/5ub4P///////////////////////////5ub4P///////////+jo+v/m5vr///////////+bm+D/m5vg/5ub4P+bm+D/ycnw//////////////////////+bm+D////////////////////////////JyfD/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/m5vg/5ub4P+bm+D/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ%3D%3D%22%3B%0A%0Athis.image%20%3D%20this.imageOn%3B%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0Avar%20cbIdNumber%20%3D%20this.id.replace%28%22custombuttons-button%22%2C%20%22%22%29%3B%0Avar%20insertButtonId%20%3D%20%22custom-paste-by-cb%22%20+%20cbIdNumber%3B%0A%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0Avar%20prefs%20%3D%20Components.classes%5B%22@mozilla.org/preferences-service%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIPrefService%29%0A%20%20%20%20%20%20%20%20%20%20%20%20.getBranch%28%22custombutton.CustomPasteForCuctomButtons%5B%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cbIdNumber%20+%20%22%5D.%22%29%3B%0Atry%20%20%20%20%20%20%7B%20var%20pref%20%3D%20prefs.getBoolPref%28%22off%22%29%3B%20%7D%0Acatch%28e%29%20%7B%20prefs.setBoolPref%28%22off%22%2C%20false%29%3B%20%7D%3B%0A%0Athis.off%20%3D%20prefs.getBoolPref%28%22off%22%29%3B%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0Afunction%20setButtonDesign%28aDoc%29%20%7B%0A%0A%20%20var%20button%20%3D%20aDoc.getElementById%28%22custom-paste-by-cb%22%20+%20cbIdNumber%29%3B%0A%20%20%20%20%20%20button.tooltipText%20%3D%20insertButtonTooltip%3B%0A%20%20%20%20%0A%20%20var%20image%20%3D%20aDoc.getAnonymousNodes%28button%29%5B1%5D%3B%0A%20%20%20%20%20%20image.style.backgroundColor%20%3D%20insertButtonBackgroundColor%3B%0A%20%20%20%20%20%20image.style.MozMarginEnd%20%3D%20%220px%22%3B%0A%20%20%20%20%0A%20%20var%20dropmarker%20%3D%20aDoc.getAnonymousNodes%28button%29%5B3%5D%3B%0A%20%20%20%20%20%20dropmarker.hidden%20%3D%20true%3B%20%20%7D%0A%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0Aconst%20%20kXULNS%20%3D%20%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%3B%0A%0A%20%20var%20place%20%3D%20null%3B%0A%20%20var%20focusedElement%20%3D%20null%3B%0A%0A//%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%0A%0Afunction%20createButton%28aDoc%29%20%7B%0A%0Avar%20%20button%20%3D%20document.createElementNS%28kXULNS%2C%20%22toolbarbutton%22%29%3B%0A%20%20%20%20%20button.setAttribute%28%22image%22%2C%20insertButtonImage%29%3B%0A%20%20%20%20%20button.setAttribute%28%22id%22%2C%20insertButtonId%29%3B%0A%20%20%20%20%20button.setAttribute%28%22type%22%2C%20%22menu%22%29%3B%0A//-------------------------------------------------------------%0A%20%20%20%20%20button.onmouseover%20%3D%20function%28%29%7B%20%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20focusedElement%20%3D%20aDoc.commandDispatcher.focusedElement%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28focusedElement.nodeName%20%21%3D%20%22html%3Atextarea%22%29%20return%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20place%20%3D%20focusedElement%3B%20%7D%0A//--------------------------------------------------------------%0Avar%20%20menupopup%20%3D%20document.createElementNS%28kXULNS%2C%20%22menupopup%22%29%3B%0A%20%20%20%20%20button.appendChild%28menupopup%29%3B%0A%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0Avar%20onSelf%20%3D%20false%3B%0A%0Aif%20%28aDoc.location.href.split%28%22custombuttons-button%22%29%5B1%5D%20%3D%3D%20cbIdNumber%29%20%7B%0A%0A%20%20%20%20onSelf%20%3D%20true%3B%0A%20%20%20%20button.setAttribute%28%22image%22%2C%20insertButtonImageOnSelf%29%3B%0A%0A%20%20%20%20%20%20if%20%28items%5B0%5D%20%21%3D%20%22%u0421%u0435%u043F%u0430%u0440%u0430%u0442%u043E%u0440%22%20+%20theSeparator%20%29%20%7B%0A%0A%20%20%20%20%20%20%20%20%20%20items.unshift%28%22%u0421%u0435%u043F%u0430%u0440%u0430%u0442%u043E%u0440%22%20+%20theSeparator%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%u0423%u043A%u0430%u0437%u0430%u0442%u0435%u043B%u044C%20%u043A%u0443%u0440%u0441%u043E%u0440%u0430%22%20+%20%22%5Cn%22%20+%20cursorIndex%20+%20cursorIndex%29%3B%20%7D%7D%0A%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0Afor%20%28var%20i%20%3D%200%3B%20i%20%3C%20items.length%3B%20i++%29%20%7B%0A%20%20%20%20%20%0A%20%20var%20label%20%3D%20items%5Bi%5D.split%28%22%5Cn%22%2C1%29%3B%0A%20%20var%20insertText%20%3D%20items%5Bi%5D.replace%28label%20+%20%22%5Cn%22%2C%20%22%22%29%3B%0A%20%20%0A%20%20var%20%20menuitem%20%3D%20document.createElementNS%28kXULNS%2C%20%22menuitem%22%29%3B%0A%20%20%20%20%20%20%20menuitem.setAttribute%28%22label%22%2C%20label%29%3B%0A%20%20%20%20%20%20%20menuitem.insertText%20%3D%20insertText%3B%0A%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20if%20%28insertText%20%3D%3D%20theSeparator.substring%281%2C%20theSeparator.length%29%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20insertText%20%3D%3D%20cursorIndex%20+%20cursorIndex%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.style.fontWeight%20%3D%20%20%20%22bold%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.style.color%20%20%20%20%20%20%3D%20%20%20%22rgb%28183%2C53%2C47%29%22%3B%20%20%7D%0A%20%20%20%20%20%20%20%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0A%20%20%20menuitem.inserter%20%3D%20function%20inserter%28aText%29%20%7B%0A%20%20%20%20%20%20%20%0A%20%20%20%20%20var%20cursorPosition%20%3D%20place.selectionStart%20+%20aText.split%28cursorIndex%29%5B0%5D.length%3B%0A%20%20%20%20%20aText%20%3D%20aText.replace%28cursorIndex%2C%20%22%22%29%3B%0A%20%20%20%20%20if%20%28aText%20%3D%3D%20cursorIndex%29%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cursorPosition%20%3D%20place.selectionStart%20+%20cursorIndex.length%3B%0A//------------------------------------------------------------------------------%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20var%20cmd%20%3D%20%22cmd_insertText%22%3B%20//http%3A//forum.mozilla-russia.org/viewtopic.php%3Fpid%3D450336%23p450336%0A%20%20var%20controller%20%3D%20aDoc.commandDispatcher.getControllerForCommand%28cmd%29%3B%0A%20%20%0A%20if%28controller%20%26%26%20controller.isCommandEnabled%28cmd%29%29%20%7B%0A%0A%20%20%20%20controller%20%3D%20controller.QueryInterface%28Components.interfaces.nsICommandController%29%3B%0A%20%20%20%20var%20params%20%3D%20Components.classes%5B%22@mozilla.org/embedcomp/command-params%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsICommandParams%29%3B%0A%20%20%20%20params.setStringValue%28%22state_data%22%2C%20aText%29%3B%0A%20%20%20%20%0A%20%20%20%20controller.doCommandWithParams%28cmd%2C%20params%29%3B%20%7D%0A//-------------------------------------------------------------------------------%0A%20%20place.selectionStart%20%3D%20place.selectionEnd%20%3D%20cursorPosition%20%7D%0A%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0A%20%20var%20%20commandString%20%3D%20%22inserter%28event.target.insertText%29%22%3B%0A%20%20%20%20%20%20%20menuitem.setAttribute%28%22oncommand%22%2C%20commandString%29%3B%0A%20%20%20%20%20%20%20menupopup.appendChild%28menuitem%29%3B%0A%20%7D%0A%20%0A%20if%20%28onSelf%29%20items%20%3D%20thisCB.Help.split%28theSeparator%29%3B%0A%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20button%3B%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A//%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%u263C%0A%0Afunction%20isButtonAlredyPresent%28aDoc%29%20%7B%20//%20advice%20by%20Inforcatcher%0A%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%21%21aDoc.getElementById%28insertButtonId%29%3B%20%7D%0A%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0Avar%20oSvc%20%3D%20Components.classes%5B%22@mozilla.org/observer-service%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIObserverService%29%3B%0A%0Avar%20pattern%20%3D%20/chrome%3A%5C/%5C/custombuttons%5C/content%5C/editor.xul/%0A%0Avar%20observer%20%3D%20%7B%20//%20thanks%20for%20Infocatcher%0A%0Aobserve%3A%20function%28subject%2C%20topic%2C%20data%29%20%7B%0A%20%20%20%20%20%20%20%20%20subject.addEventListener%28%22load%22%2C%20this%2C%20false%29%3B%20%7D%2C%0A%20%20%20%20%20%20%0AhandleEvent%3A%20function%28e%29%20%7B%0A%20%20%20%20var%20doc%20%3D%20e.target%3B%0A%20%20%20%20var%20win%20%3D%20doc.defaultView%3B%0A%20%20%20%20%20%20%20%20win.removeEventListener%28%22load%22%2C%20this%2C%20false%29%3B%0A%20%20%20%20if%20%28%21RegExp%28pattern%29.test%28doc.location.href%29%29%20return%3B%0A%0A%20%20%20%20if%20%28%21isButtonAlredyPresent%28doc%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20tabs%20%3D%20doc.getElementsByTagName%28%22tabs%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tabs%5B0%5D.appendChild%28createButton%28doc%29%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setButtonDesign%28doc%29%20%20%20%20%20%20%7D%7D%7D%3B%0A%20%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0Avar%20ww%20%3D%20Components.classes%5B%22@mozilla.org/embedcomp/window-watcher%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIWindowWatcher%29%3B%0A%0Avar%20activeWin%20%3D%20null%3B%20%20%20%20%20%20%20%20%20%0Athis.onmouseover%20%3D%20function%28%29%20%7B%20activeWin%20%3D%20ww.activeWindow%3B%20%7D%0A%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0Athis.run%20%3D%20function%28%29%20%7B%20%0A%0A%20%20if%20%28%21this.off%29%20%20%7B%20oSvc.addObserver%28observer%2C%20%22domwindowopened%22%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20prefs.setBoolPref%28%22off%22%2C%20false%29%3B%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20if%20%28this.off%20%29%20%20%7B%20oSvc.removeObserver%28observer%2C%20%22domwindowopened%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20prefs.setBoolPref%28%22off%22%2C%20true%29%3B%20%7D%0A%20%20%20%0A%20%20var%20enumerator%20%3D%20ww.getWindowEnumerator%28%29%3B%0A%20%20var%20win%20%3D%20true%3B%0A%20%20while%20%28win%29%20%7B%20win%20%3D%20enumerator.getNext%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%21win%29%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20doc%20%3D%20win.document%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%21RegExp%28pattern%29.test%28doc.location.href%29%29%20continue%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28%21this.off%29%20%7B%20if%20%28isButtonAlredyPresent%28doc%29%29%20%20continue%3B%20%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20tbs%20%3D%20doc.getElementsByTagName%28%22tabs%22%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tbs%5B0%5D.appendChild%28createButton%28doc%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setButtonDesign%28doc%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28win%20%3D%3D%20activeWin%29%20win.focus%28%29%3B%20%7D%0A%0A%20%20%20%20%20%20%20%20if%20%28this.off%29%20%7B%20var%20b%20%3D%20doc.getElementById%28insertButtonId%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20while%20%28b%29%20%7B%20b%20%3D%20doc.getElementById%28insertButtonId%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28b%29%20%7B%20b.parentElement.removeChild%28b%29%3B%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28win%20%3D%3D%20activeWin%29%20win.focus%28%29%3B%20%20%7D%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%7D%0A%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0Aif%20%28this.off%29%20%7B%20this.image%20%3D%20this.imageOff%3B%20return%3B%20%7D%0A%0Athis.run%28%29%3B%0A%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0Athis.onDestroy%20%3D%20function%28%29%20%7B%20//%20thanks%20for%20Infocatcher%2C%20again%0A%20%20%20%20var%20on%20%3D%20%21this.off%3B%0A%20%20%20%20if%28on%29%20this.off%20%3D%20true%3B%0A%20%20%20%20this.run%28%29%3B%0A%20%20%20%20if%28on%29%20%7B%20this.off%20%3D%20false%3B%20prefs.setBoolPref%28%22off%22%2C%20false%29%3B%20%7D%7D%3B%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bthis.off%20%3D%20%21this.off%3B%0A%0Aif%20%20%28this.off%29%20this.image%20%3D%20this.imageOff%3B%0Aif%20%28%21this.off%29%20this.image%20%3D%20this.imageOn%3B%0A%0Athis.run%28%29%3B%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%5Balert%0Aalert%28%22%60%22%29%3B%0A%0A%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%0Atabshifted%0AopenUILinkIn%28%22http%3A//%60%22%2C%20%22tabshifted%22%29%3B%0A%0A%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%0AkXULNS%0Aconst%20kXULNS%20%3D%20%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%3B%0A%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%0AnsIObserverService%0A%0Avar%20oSvc%20%3D%20Components.classes%5B%22@mozilla.org/observer-service%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIObserverService%29%3B%0A%0A%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%0Asnippet%0A%0Avar%20text%20%3D%20%22...%22%3B%0A%0Avar%20cmd%20%3D%20%22cmd_insertText%22%3B%0Avar%20controller%20%3D%20document.commandDispatcher.getControllerForCommand%28cmd%29%3B%0Aif%28controller%20%26%26%20controller.isCommandEnabled%28cmd%29%29%20%7B%20%0A%20%20%20%20controller%20%3D%20controller.QueryInterface%28Components.interfaces.nsICommandController%29%3B%0A%20%20%20%20var%20params%20%3D%20Components.classes%5B%22@mozilla.org/embedcomp/command-params%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsICommandParams%29%3B%0A%20%20%20%20params.setStringValue%28%22state_data%22%2C%20text%29%3B%0A%20%20%20%20controller.doCommandWithParams%28cmd%2C%20params%29%3B%0A%7D%0A%0A%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%0A%u0438.%u0442.%u0434%0A%0A%u0438%20%u0442%u0430%u043A%20%u0434%u0430%u043B%u0435%u0435%2C%0A%u0438%20%u0442%u043E%u043C%u0443%20%u043F%u043E%u0434%u043E%u0431%u043D%u043E%u0435%20...%0A%0A%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Отсутствует

 

№447701-08-2012 08:22:22

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

Re: Custom Buttons

bunda1 Не спорю, ваша кнопочка проще чем у  klaus65, но работает непонятно как то. При первом клике на нее, просто дергается и все, только повторный клик выдает меню с кодами.
После нажатия появляется какой то квадратик рядом с кнопкой, который увеличивается по мере кликов на коды a870425c1702958d99c813f4b0537513.png
Ну и в кнопке от klaus65 три подменю с кодами цветов, выравнивания и BB Code, что согласитесь удобнее намного. Если в вашу кнопку заложить все коды, то она получается слишком большой при раскрытии.
Но в принципе не это напрягает, а странное поведение при кликах по ней.

Отредактировано vv07 (01-08-2012 08:31:00)

Отсутствует

 

№447801-08-2012 09:08:04

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

Re: Custom Buttons

okkamas_knife пишет

А кто знает что с http://custombuttons.mozdev.org/drupal/content/custom-buttons-documentation ?
выдаёт 403 как и остальные страницы с адресом http://custombuttons.mozdev.org/drupal/*

По-моему, там заблокированы все http://*.mozdev.org/drupal/*
Например, на http://brief.mozdev.org/drupal/ то же самое.
Причем сначала там Drupal сломали – обновили PHP, а установленная версия Drupal'а оказалось слишком старой для таких маневров. А теперь вот это. Для безопасности закрыли, надо полагать. :D

vv07 пишет

При первом клике на нее, просто дергается и все, только повторный клик выдает меню с кодами.

Видимо, код не в той секции – надо в «инициализацию».

Отредактировано Infocatcher (01-08-2012 09:11:51)


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

Отсутствует

 

№447903-08-2012 13:44:13

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

Re: Custom Buttons

Загуглил «drupal 403 site:mozdev.org»:
http://mozdev.org/pipermail/project_own … 13224.html (и далее)


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

Отсутствует

 

№448003-08-2012 16:53:09

SendAbuse
Участник
 
Группа: Members
Зарегистрирован: 08-03-2012
Сообщений: 113
UA: Firefox 11.0

Re: Custom Buttons

okkamas_knife,  только что пришёл, пока только краем левого глаза
успел взглянуть на твой вариант и сразу решил отписаться.
Самые первые, поверхностные впечатления:

Приятно удивлён обилием примеров, ты здорово потрудился,
только сейчас начинаю осознавать весь потенциал проекта,
я то поначалу думал - это всего лишь подспорье для тех,
кто ( как я ) с трудом печатает одним пальцем.

Ещё - как-то сразу заинтересовал пункт: Внимание!! если надо сложить два числа...
Набрал:   var a = 1;
                var b = 3;
                var n = a + b;
                alert(n);
Пишет: 4.  Что я делаю не так ?

Насчёт  [чтоб кнопка не только меняла иконку но и нажималась]
         и  [сделал чтоб вставленный код выделялся после вставки]
я не понял в чём смысл ( только не сочти за претензию или
за насмешку, я, пока, действительно не понял приемуществ... )

В остальном - буду обдумывать дальше.

Отсутствует

 

№448103-08-2012 18:26:44

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 15.0

Re: Custom Buttons

okkamas_knife пишет

что интересно вводим цифру через промпт, для цикла for эта переменная число, для операции вычитания тоже а вот при сложении это символ..

Промпт возвращает именно строку. Ни переменная цикла, ни операнд вычитания строкой быть не могут, поэтому они неявно приводятся к числу (при наличии такой возможности). Операция "+" же для строк определена - это конкатенация, поэтому при сложении преобразования в число не производится, но наоборот, к строке неявно приводится второй (числовой) операнд:

Выделить код

Код:

var a="5";
var b=3;
alert(a-b);
alert(a+b);

Результат: 2 и 53.

Отредактировано hydrolizer (03-08-2012 18:29:26)

Отсутствует

 

№448203-08-2012 20:17:07

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

Re: Custom Buttons

okkamas_knife пишет

СКМ - Стандартное меню кнопки вызываемое по пкм
то бишь чтоб стандартное меню кнопки было на среднем клике а правы и левый были свободны для каких либо действий

Выделить код

Код:

//настройка функций кликов мыши(Mouse Click settings)...................................................
this.onclick = function(event) {
// Действие при клике ЛКМ .....
if(event.button == 0){
alert(1);
}
    
// Действие при клике СКМ .....
else if(event.button == 1) {
// Показываем контекстное меню кнопки
gShowPopup(this);
}
   
//Действие при клике ПКМ без модификаторов....
else if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
alert(2);
}
 };

// Блокируем контекстное меню при клике ПКМ без модификаторов..............
this.oncontextmenu = function(event) {
    if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
        event.preventDefault();
        event.stopPropagation();
    }
};

Отсутствует

 

№448304-08-2012 04:45:08

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 15.0

Re: Custom Buttons

bunda1
По поводу http://forum.mozilla-russia.org/viewtop … 01#p575801 (кнопка CB Profile Password): лучше сделать хранение пароля через nsILoginManager - это лучше с т.з. секьюрности - пароль будет храниться зашифрованным в signons.sqlite, откуда его так просто не удалить (не говоря о том, что вытащить строчку из prefs.js, и перекодировать её обратно из base64 для знающих людей - дело 5 минут).
Когда-то я делал мод для Panic Button, там это выглядело так:
добавление/сохранение пароля:

Выделить код

Код:

var lm=Components.classes["@mozilla.org/login-manager;1"]
  .getService(Components.interfaces.nsILoginManager);
var logins=lm.findLogins({}, "panicbutton:access", null, "Profile access")
  .filter(function(elem) elem.username="default user");
var loginInfo=new Components.Constructor("@mozilla.org/login-manager/loginInfo;1",
  Components.interfaces.nsILoginInfo, "init");
var li=new loginInfo("panicbutton:access", null, "Profile access", "default user",
  document.getElementById("tePassword").value, "", "");
if (logins.length==0)
  lm.addLogin(li);
else
  lm.modifyLogin(logins[0], li);

Получение/сравнение пароля:

Выделить код

Код:

if (Components.classes["@mozilla.org/login-manager;1"]
  .getService(Components.interfaces.nsILoginManager)
  .findLogins({}, "panicbutton:access", null, "Profile access")
  .filter(function(elem) elem.username="default user")[0]
  .password != document.getElementById("password-box").value)
    throw new Error("incorrect password");

Еще как вариант - шифровать пароль по AES-256 - вот одна из его реализаций (она фактически идентична той, которая используется для шифрования закладок в Link Password). Но тогда придется шифровать по постоянному ключу, хранимому где-то в настройках (например), что тоже не особенно хорошо в плане секьюрности. Ну, и опять же - хранение пароля в настройках, откуда его можно очень запросто удалить.

Отсутствует

 

№448404-08-2012 08:29:18

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 15.0

Re: Custom Buttons

okkamas_knife пишет

зы гораздо эффективнее чтоб при вводе неправильного пароля ФФ запускался но с чистым профилем

Гораздо эффективнее делать так, как это принято делать - при том, что все средства для этого есть, и они не требуют чрезмерных усилий. Чтобы хотя бы не терять профпригодность.

Отсутствует

 

№448504-08-2012 08:53:16

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 15.0

Re: Custom Buttons

okkamas_knife пишет

ты не понял видимо что все твои извраты с шифрованием

1. Это не изврат. 10 строчек кода.
2. Речь шла не о надежности защиты, а о грамотности реализации. Для кого-то это не пустой звук.
3. И да, совет был адресован bunda1, если что.

Добавлено 04-08-2012 09:01:10

okkamas_knife пишет

лучше подскажи как закодированный в base64 бинарный файл сохранить на диск в нормальном виде?

window.btoa + nsIFileOutputStream + FileUtils.openSafeFileOutputStream/NetUtil.asyncCopy

Отредактировано hydrolizer (04-08-2012 09:01:10)

Отсутствует

 

№448604-08-2012 12:01:50

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

Re: Custom Buttons

hydrolizer
Спасибо за идею и коды,  действительно сохранение пароля через nsILoginManager получится более безопасная.
Но возникает вопрос как кнопке без prefs.js узнать что она включена, иначе нет смысла в nsILoginManager ведь можно найти в prefs.js настройку которая отвечает за включение кнопки и удалить.
Хотя можно настройку замаскировать в prefs.js под стандартною типа - bidi.pass.
Или может лучше через nsILoginManager записывать пароль содержащую информацию о том что кнопка включена типа true_pass и false_pass

Но главный вопрос как сделатъ что бы включеная кнопка не срабатывала после рестарта ?

Отредактировано bunda1 (04-08-2012 12:11:43)

Отсутствует

 

№448704-08-2012 13:14:39

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

Re: Custom Buttons

okkamas_knife
Ну конечно пароль обходится элементарно, но лудше этот обход усложнить. Что бы не было совсем просто.

Отсутствует

 

№448804-08-2012 13:46:13

Tiger.711
‌
 
Группа: Extensions
Откуда: из Лесу
Зарегистрирован: 30-07-2010
Сообщений: 7975
UA: Firefox 17.0

Re: Custom Buttons

Я не понял, о чём спор? Криптоконтейнеры отменили?


Большой кот... Пуфыстый... Полосатый... Зубастый (:

Отсутствует

 

№448904-08-2012 20:43:05

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

Re: Custom Buttons

bunda1
Ура! Долгожданная кнопочка CB Profile Password обновилась! :rock:

Отсутствует

 

№449004-08-2012 20:50:55

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

Re: Custom Buttons

Inko7
Я же обещал.

Отсутствует

 

№449105-08-2012 00:19:08

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

Re: Custom Buttons

okkamas_knife пишет

набил менюху сниппетами для новичка

chrome://browser/content/browser.js

Выделить код

Код:

/* DEPRECATED */
function getBrowser() gBrowser;

Так что лучше везде вместо getBrowser() использовать gBrowser.

Выделить код

Код:

if(getBrowser().currentURI.spec == "about:blank") loadURI (url);

Недостаточно проверить ссылку – в процессе загрузки сначала тоже будет about:blank.
Плюс в новых вкладках теперь по умолчанию ссылка из настройки browser.newtab.url.

Выделить код

Код:

var url = "http://custombuttons.mozdev.org/";
if(
    (
        gBrowser.currentURI.spec == "about:blank"
        || gBrowser.currentURI.spec == cbu.getPrefs("browser.newtab.url")
    )
    && !gBrowser.selectedBrowser.webProgress.isLoadingDocument
)
    loadURI(url);
else
    gBrowser.selectedTab = gBrowser.addTab(url);
Выделить код

Код:

content.document.body.innerHTML =vnachalo + content.document.body.innerHTML+vkonec;

У этого кода очень много побочных эффектов.
Потеряется текст из полей для ввода и состояние контролов. И сбросятся все обработчики событий, добавленные через addEventListener.
Вот для добавления произвольного HTML-кода:

Выделить код

Код:

var begin = "<b>Этот жирный текст и линия в начале страницы<b><hr>";
var end = "<br><u>Этот подчеркнутый текст и картинка <img src='http://www.mozilla.org/favicon.ico'> в конце страницы</u>";
var doc = content.document;
var body = doc.body || doc.documentElement;
body.insertBefore(createDocumentFragment(begin), body.firstChild);
body.appendChild(createDocumentFragment(end));
function createDocumentFragment(html) {
    var tmp = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
    tmp.innerHTML = html;
    var df = doc.createDocumentFragment();
    while(tmp.hasChildNodes())
        df.appendChild(tmp.firstChild);
    return df;
}

(К сожалению, DocumentFragment почему-то не умеет innerHTML.)
Но обычно проще вставлять в узле-контейнере:

Выделить код

Код:

var begin = "<b>Этот жирный текст и линия в начале страницы<b><hr>";
var end = "<br><u>Этот подчеркнутый текст и картинка <img src='http://www.mozilla.org/favicon.ico'> в конце страницы</u>";
var doc = content.document;
var body = doc.body || doc.documentElement;
body.insertBefore(createDiv(begin), body.firstChild);
body.appendChild(createDiv(end));
function createDiv(html) {
    var div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
    div.innerHTML = html;
    return div;
}
Выделить код

Код:

var m=t.getMonth();switch(m){case 0: m="Jan";break;case 1: m="Feb";break;case 2: m="Mar";break;case 3: m="Apr";break;case 4: m="May";break;case 5: m="Jun";break;case 6: m="Jul";break;case 7: m="Aug";break;case 8: m="Sep";break;case 9: m="Oct";break;case 10: m="Nov";break;default: m="Dec";}
Выделить код

Код:

var m = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][t.getMonth()];

:)


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

Отсутствует

 

№449205-08-2012 00:23:40

SendAbuse
Участник
 
Группа: Members
Зарегистрирован: 08-03-2012
Сообщений: 113
UA: Firefox 11.0

Re: Custom Buttons

okkamas_knife,  задумал сделать дополнительный режим, чтобы
кнопки раскрывали свои менюшки при наведении мыши,
переписал всё заново, на Firefox 10.0 у меня вроде работает,
а вот на Palemoon 9.2 - уже глючит  :(  это подозрительно...
Ну, переключается - там внизу кнопка с мышкой,
ещё отменено выделение, если указана позиция курсора.
Вобщем посмотри.

Упс ! [ Сообщение не может быть длиннее 65535 символов ... ]
не знаю что делать, в кнопке набралось 82 590,
положу пока здесь

Отсутствует

 

№449305-08-2012 14:22:42

SendAbuse
Участник
 
Группа: Members
Зарегистрирован: 08-03-2012
Сообщений: 113
UA: Firefox 11.0

Re: Custom Buttons

okkamas_knife,  OK, ты прав, не стоит, сочтём за неудачный эксперимент и забудем :)

Относительно указателя курсора думал так:   иногда после операции вставки было бы
полезно, чтобы курсор сразу стоял где-то в нужном месте  посередине кода.
Простейший пример - alert, допустим указатель это § , тогда в коде пишем
alert("§"); и тогда сразу после вставки курсорчик уже стоит-мигает между кавычек.
Хотя возможно это тоже бесполезная фича ...

Насчёт предложеных тобой тем, попробую подумать, но уверен что сломаю себе  -moz'г ,
я ведь едва-ли на один процент больше, чем абсолютный чайник :D

Отсутствует

 

№449406-08-2012 01:27:44

BenderRR
Участник
 
Группа: Members
Зарегистрирован: 10-10-2011
Сообщений: 15
UA: Firefox 11.0

Re: Custom Buttons

а подскажите как сделать или может у кого есть код кнопки, которая копирует исходный код страницы (из активной вкладки) в буфер обмена ? [firefox]

Отсутствует

 

№449506-08-2012 09:16:39

SendAbuse
Участник
 
Группа: Members
Зарегистрирован: 08-03-2012
Сообщений: 113
UA: Firefox 11.0

Re: Custom Buttons

okkamas_knife,  ну сам редактор открыть во вкладке я не смог,
но попробовал сделать через посредника, то есть во вкладке открывается
пустой экземпляр для работы, а он уже передаёт изменения собственно редактору,
который тоже открыт, но свёрнут. Осторожно! Не тестируй на важных кнопках.
Ну и конечно CustomPaste там не действует (пока?)
Вот она  -  альфа-болванка:

(UPD:  Вот незадача, сейчас проверил:  десятый firefox - нормально,   palemoon 9.2 - не работает :usch:
           Похоже история повторяется. Ты скажи точно на каком фоксе ты тестируешь кнопки.
           Я себе такой-же заведу, и буду ещё и на нём проверять.  )

Выделить код

Код:

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%3EcbeTabMediator%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhYcn/YWHJ/2Fhyf9hYcn/YWHJ/2Fhyf9hYcn/YWHJ/2Fhyf9hYcn/YWHJ/2Fhyf9hYcn/YWHJ/2Fhyf9hYcn/YWHJ/2Fhyf9hYcn/YWHJ/2Fhyf9hYcn/YWHJ/2Fhyf9hYcn/YWHJ/2Fhyf9hYcn/YWHJ/2Fhyf9hYcn/YWHJ/2Fhyf9hYcn/cHDYjUlJsRUAAAAAAAAAAGFhyQ1hYckKYWHJCmFhyQ0AAAAAAAAAAEZGrhVwcNiNYWHJ/2Fhyf9hYcn/YWHJ/0xMtBUAAAAAAAAAAGFhyRJhYcneYWHJ9WFhyfVhYcneYWHJEgAAAAAAAAAAQECoFWFhyf9hYcn/YWHJ/2Fhyf8AAAAAAAAAAAAAAABhYckRYWHJ9WFhyf9hYcn/YWHJ9WFhyREAAAAAAAAAAAAAAABhYcn/YWHJ/2Fhyf9hYcn/AAAAAAAAAAAAAAAAYWHJD2FhyfBhYcn/YWHJ/2FhyfBhYckPAAAAAAAAAAAAAAAAYWHJ/2Fhyf9hYcn/YWHJ/wAAAAAAAAAAAAAAAGFhyQ5hYcnwYWHJ/2Fhyf9hYcnwYWHJDgAAAAAAAAAAAAAAAGFhyf9hYcn/YWHJ/2Fhyf8AAAAAYWHJEwAAAABhYckIYWHJ7mFhyf9hYcn/YWHJ7mFhyQgAAAAAYWHJEwAAAABhYcn/YWHJ/2Fhyf9hYcn/YWHJEGFhyclhYckkYWHJHmFhye1hYcn/YWHJ/2Fhye1hYckeYWHJJGFhyclhYckQYWHJ/2Fhyf9hYcn/YWHJ/2FhyQxhYcn2YWHJ9GFhyethYcn/YWHJ/2Fhyf9hYcn/YWHJ62FhyfRhYcn2YWHJDGFhyf9hYcn/YWHJ/2Fhyf9hYckLYWHJ+GFhyf9hYcn/YWHJ/2Fhyf9hYcn/YWHJ/2Fhyf9hYcn/YWHJ+GFhyQthYcn/YWHJ/2Fhyf9hYcn/YWHJCWFhydxhYcn1YWHJ8GFhyfBhYcnwYWHJ8GFhyfBhYcnwYWHJ9WFhydxhYckJYWHJ/2Fhyf9hYcn/YWHJ/0NDqw9hYckPYWHJD2FhyQ9hYckPYWHJD2FhyQ9hYckPYWHJD2FhyQ9hYckPYWHJD2Fhyf9hYcn/YWHJ/2Fhyf9wcNiNQECoEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ0OrEHBw2I1hYcn/YWHJ/2Fhyf9hYcn/YWHJ/2Fhyf9hYcn/YWHJ/2Fhyf9hYcn/YWHJ/2Fhyf9hYcn/YWHJ/2Fhyf9hYcn/YWHJ/2Fhyf9hYcn/YWHJ/2Fhyf9hYcn/YWHJ/2Fhyf9hYcn/YWHJ/2Fhyf9hYcn/YWHJ/2Fhyf9hYcn/YWHJ/2Fhyf9hYcn/AACsQQAArEEMMKxBGBisQTgcrEE4HKxBOBysQSgUrEEAAKxBAACsQQAArEEAAKxBAACsQQ/wrEEAAKxBAACsQQ%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bconst%20%20kXULNS%20%3D%20%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%3B%0A%0Avar%20menupopup%20%20%20%20%20%20%3D%20document.getElementById%28%22custombuttons-contextpopup%22%29%3B%0Avar%20menuitemEdit%20%20%20%3D%20document.getElementById%28%22custombuttons-contextpopup-edit%22%29%3B%0Avar%20menuitemRemove%20%3D%20document.getElementById%28%22custombuttons-contextpopup-remove%22%29%3B%0A%0Avar%20%20menuItem%20%3D%20document.createElementNS%28kXULNS%2C%20%22menuitem%22%29%3B%0A%20%20%20%20%20menuItem.id%20%3D%20%22custombuttons-contextpopup-edit-%5Btab%5D%22%3B%0A%20%20%20%20%20menuItem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%0A%20%20%20%20%20menuItem.setAttribute%28%22label%22%2C%20%22%u0420%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u0442%u044C...%20%5B%20Tab%20%5D%22%29%3B%0A%20%20%20%20%20menuItem.setAttribute%28%22oncommand%22%2C%0A%20%20%20%20%20%20%22custombuttons.editInTab%20%3D%20true%3B%20custombuttons.editButton%28%29%3B%22%29%3B%0A%0A%20%20%20%20menupopup.insertBefore%28menuItem%2C%20menuitemEdit.nextElementSibling%29%3B%0A%0Acustombuttons.editInTab%20%3D%20false%3B%0A%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0Avar%20oSvc%20%3D%20Components.classes%5B%22@mozilla.org/observer-service%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIObserverService%29%3B%0A%0Avar%20pattern%20%3D%20/chrome%3A%5C/%5C/custombuttons%5C/content%5C/editor.xul/%0A%0Avar%20observer%20%3D%20%7B%20//%20thanks%20for%20Infocatcher%0A%0Aobserve%3A%20function%28subject%2C%20topic%2C%20data%29%20%7B%0A%20%20%20%20%20%20%20%20%20subject.addEventListener%28%22load%22%2C%20this%2C%20false%29%3B%20%7D%2C%0A%20%20%20%20%20%20%0AhandleEvent%3A%20function%28e%29%20%7B%0A%20%20%20%20var%20doc%20%3D%20e.target%3B%0A%20%20%20%20var%20win%20%3D%20doc.defaultView%3B%0A%20%20%20%20%20%20%20%20win.removeEventListener%28%22load%22%2C%20this%2C%20false%29%3B%0A%20%20%20%20if%20%28%21RegExp%28pattern%29.test%28doc.location.href%29%29%20return%3B%0A%20%20%20%20%0Aif%20%28%21custombuttons.editInTab%29%20return%3B%0Acustombuttons.editInTab%20%3D%20false%3B%0A%0A//---------------------------------------------------------%0A%0Awin.onfocus%20%3D%20function%28%29%20%7B%20win.minimize%28%29%3B%20/*%20win.onfocus%20%3D%20null%3B%20*/%20%7D%0A%0AgBrowser.selectedTab%20%3D%20gBrowser.addTab%28%22chrome%3A//custombuttons/content/editor.xul%22%29%3B%0A%0Afunction%20run%28%29%7B%0A%0Avar%20tabDoc%20%3D%20gBrowser.selectedTab.linkedBrowser.contentDocument%3B%0Avar%20tabDialog%20%3D%20tabDoc.lastChild%3B%0A%0Avar%20title%20%3D%20doc.title%3B%0A%0Avar%20buttonSave%20%3D%20tabDoc.getAnonymousElementByAttribute%28tabDialog%2C%20%22dlgtype%22%2C%20%22extra2%22%29%3B%0A%20%20%20%20buttonSave.setAttribute%28%22hidden%22%2C%20%22false%22%29%3B%0A%0Avar%20tabImage%20%3D%20tabDoc.getElementById%28%22image%22%29%3B%0Avar%20%20%20%20image%20%3D%20doc.getElementById%28%22image%22%29%3B%0A%0Avar%20%20tabName%20%3D%20tabDoc.getElementById%28%22name%22%29%3B%0Avar%20%20%20%20%20name%20%3D%20doc.getElementById%28%22name%22%29%3B%0A%0Avar%20%20tabURL%20%3D%20tabDoc.getElementById%28%22urlfield-textbox%22%29%3B%0Avar%20%20%20%20%20URL%20%3D%20doc.getElementById%28%22urlfield-textbox%22%29%3B%0A%0Avar%20%20tabKey%20%3D%20tabDoc.getElementById%28%22accelkey%22%29%3B%0Avar%20%20%20%20%20key%20%3D%20doc.getElementById%28%22accelkey%22%29%3B%0A%0Avar%20%20%20tabChek%20%3D%20tabDoc.getElementById%28%22disableDefaultKeyBehavior%22%29%0Avar%20%20%20%20%20check%20%3D%20doc.getElementById%28%22disableDefaultKeyBehavior%22%29%3B%0A%0Afunction%20getTextBox%28aDoc%2C%20aID%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20cbEditor%20%3D%20aDoc.getElementById%28aID%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20textBox%20%20%3D%20aDoc.getAnonymousNodes%28cbEditor%29%5B0%5D.firstChild%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20textBox%3B%20%7D%0A%0Avar%20tabCode%20%3D%20getTextBox%28tabDoc%2C%20%22code%22%29%3B%0Avar%20tabInit%20%3D%20getTextBox%28tabDoc%2C%20%22initCode%22%29%3B%0Avar%20tabHelp%20%3D%20getTextBox%28tabDoc%2C%20%22help%22%29%3B%0A%0Avar%20code%20%3D%20getTextBox%28doc%2C%20%22code%22%29%3B%0Avar%20init%20%3D%20getTextBox%28doc%2C%20%22initCode%22%29%3B%0Avar%20help%20%3D%20getTextBox%28doc%2C%20%22help%22%29%3B%0A%0Afunction%20tabImport%28%29%20%7B%20%20%20%20tabDoc.title%20%3D%20title%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tabCode.value%20%3D%20code.value%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tabInit.value%20%3D%20init.value%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tabHelp.value%20%3D%20help.value%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tabImage.value%20%3D%20image.value%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tabName.value%20%3D%20name.value%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tabURL.value%20%3D%20URL.value%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tabKey.value%20%3D%20key.value%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tabChek.checked%20%3D%20check.checked%20%7D%0AtabImport%28%29%3B%0A%0AtabDoc.export%20%3D%20function%28%29%20%7B%20code.value%20%3D%20tabCode.value%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20init.value%20%3D%20tabInit.value%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20help.value%20%3D%20tabHelp.value%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20image.value%20%3D%20tabImage.value%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name.value%20%3D%20tabName.value%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20URL.value%20%3D%20tabURL.value%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20key.value%20%3D%20tabKey.value%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20check.checked%20%3D%20tabChek.checked%3B%20%7D%0A%0A%0AtabDoc.linkedButtonOK%20%20%20%20%20%3D%20doc.getAnonymousElementByAttribute%28doc.lastChild%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22dlgtype%22%2C%20%22accept%22%29%3B%0AtabDoc.linkedButtonSave%20%20%20%3D%20doc.getAnonymousElementByAttribute%28doc.lastChild%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22dlgtype%22%2C%20%22extra2%22%29%3B%0AtabDoc.linkedButtonCancel%20%3D%20doc.getAnonymousElementByAttribute%28doc.lastChild%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22dlgtype%22%2C%20%22cancel%22%29%3B%0A%0Aconst%20strAccept%20%3D%20%22this.document.export%28%29%3Bthis.document.linkedButtonOK.click%28%29%3B%22%0AtabDialog.setAttribute%28%22ondialogaccept%22%2C%20strAccept%29%3B%0A%0Aconst%20strSave%20%3D%20%22this.document.export%28%29%3Bthis.document.linkedButtonSave.click%28%29%3B%22%0AtabDialog.setAttribute%28%22ondialogextra2%22%2C%20strSave%29%3B%0A%0Aconst%20strCancel%20%3D%20%22this.document.export%28%29%3Bthis.document.linkedButtonCancel.click%28%29%3B%22%0AtabDialog.setAttribute%28%22ondialogcancel%22%2C%20strCancel%29%3B%0A%0A%0Avar%20tabWin%20%3D%20tabDoc.defaultView%3B%0A%20%20%20win.onunload%20%3D%20function%28%29%20%7B%20if%20%28tabWin%29%20tabWin.close%28%29%3B%20%7D%0AtabWin.onunload%20%3D%20function%28%29%20%7B%20if%20%28win%29%20%20%20%20%20%20%20win.close%28%29%3B%20%7D%0A%0A%7D%0Awindow.setTimeout%28run%2C%20200%29%3B%20%0A%7D%7D%0A%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0A%20%20%20%20%20%20%20oSvc.addObserver%28observer%2C%20%22domwindowopened%22%2C%20false%29%3B%0A%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0Athis.onDestroy%20%3D%20function%28%29%20%7B%20oSvc.removeObserver%28observer%2C%20%22domwindowopened%22%29%3B%20%0Amenupopup.removeChild%28document.getElementById%28%22custombuttons-contextpopup-edit-%5Btab%5D%22%29%29%3B%0Awin.onfocus%20%3D%20null%3B%0Awin.onunload%20%3D%20null%3B%0AtabWin.onunload%20%3D%20null%3B%20%7D%0A%0A%0A%0A%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

Отредактировано SendAbuse (06-08-2012 09:48:17)

Отсутствует

 

№449606-08-2012 18:28:30

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

Re: Custom Buttons

BenderRR пишет

а подскажите как сделать или может у кого есть код кнопки, которая копирует исходный код страницы (из активной вкладки) в буфер обмена ?[firefox]

Выделить код

Код:

var req = XMLHttpRequest();
req.onload = function() {
    Components.classes["@mozilla.org/widget/clipboardhelper;1"]
        .getService(Components.interfaces.nsIClipboardHelper)
        .copyString(req.responseText);
};
req.open("GET", "view-source:" + content.location.href, true);
req.send(null);

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

Отсутствует

 

№449706-08-2012 18:58:17

BenderRR
Участник
 
Группа: Members
Зарегистрирован: 10-10-2011
Сообщений: 15
UA: Firefox 11.0

Re: Custom Buttons

Infocatcher, огромное спасибо за код кнопки!

Отсутствует

 

№449806-08-2012 19:42:29

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

Re: Custom Buttons

Осторожно, это все тестовые версии!

Attributes Inspector 0.6.0pre7 (2012-07-07)
* Убрано использование deprecated E4X

Undo Close Tabs List 0.3.0pre7 (2012-07-31)
+ Добавлена настройка hideRestoreAllForSingleEntry
* Иконки объединены в один файл для улучшения производительности
* Убрано использование deprecated E4X

Extensions Developer Tools 0.1.0pre10 (2012-08-06)
* Убрано использование deprecated E4X
* Обновлен Attributes Inspector
+ В меню настроек добавлены javascript.options.xml.chrome и javascript.options.xml.content

Session Bookmarks 0.2.0pre30 (2012-08-06)
* Убрано использование deprecated E4X
+ Добавлено предупреждение об удалении данных сессии при изменении ссылки в диалоге свойств
* Небольшие улучшения кода

Bookmarks Folder 0.1.0pre9 (2012-08-06)
* Убрано использование deprecated E4X
+ Добавлена возможность выбрать корневую папку, содержащую все имеющиеся закладки


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

Отсутствует

 

№449906-08-2012 21:10:09

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

Re: Custom Buttons

Extensions Developer Tools 0.1.0pre11 (2012-08-06)
+ В меню настроек добавлена javascript.options.strict.debug (работает только в отладочных сборках, отладочность сборки определяется по выставленному в false значению по умолчанию для general.warnOnAboutConfig)

Отредактировано Infocatcher (06-08-2012 21:14:11)


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

Отсутствует

 

№450006-08-2012 22:14:54

seven.ap
Участник
 
Группа: Members
Зарегистрирован: 02-07-2012
Сообщений: 58
UA: Firefox 14.0

Re: Custom Buttons

установил в фаерфокс кнопку отсюда http://forum.mozilla-russia.org/viewtopic.php?pid=525792#p525792
она работает,  но я пытаюсь вписать адрес (мне нужен вот такой chrome://fvd.speeddial/content/fvd_about_blank.html, пробовал и вот такой about:blank) выскакивает сообщение:
"кнопка не может быть создана, потому что содержит ошибки!" что я в своих действиях неправильно делаю?

Отсутствует

 

Board footer

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