Infocatcher, BRILLIANT !!! Ты - гений компетентности !
Большое спасибо
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
Отсутствует
bunda1 Не спорю, ваша кнопочка проще чем у klaus65, но работает непонятно как то. При первом клике на нее, просто дергается и все, только повторный клик выдает меню с кодами.
После нажатия появляется какой то квадратик рядом с кнопкой, который увеличивается по мере кликов на коды
Ну и в кнопке от klaus65 три подменю с кодами цветов, выравнивания и BB Code, что согласитесь удобнее намного. Если в вашу кнопку заложить все коды, то она получается слишком большой при раскрытии.
Но в принципе не это напрягает, а странное поведение при кликах по ней.
Отредактировано vv07 (01-08-2012 08:31:00)
Отсутствует
А кто знает что с 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'а оказалось слишком старой для таких маневров. А теперь вот это. Для безопасности закрыли, надо полагать.
При первом клике на нее, просто дергается и все, только повторный клик выдает меню с кодами.
Видимо, код не в той секции – надо в «инициализацию».
Отредактировано Infocatcher (01-08-2012 09:11:51)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Загуглил «drupal 403 site:mozdev.org»:
http://mozdev.org/pipermail/project_own … 13224.html (и далее)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
okkamas_knife, только что пришёл, пока только краем левого глаза
успел взглянуть на твой вариант и сразу решил отписаться.
Самые первые, поверхностные впечатления:
Приятно удивлён обилием примеров, ты здорово потрудился,
только сейчас начинаю осознавать весь потенциал проекта,
я то поначалу думал - это всего лишь подспорье для тех,
кто ( как я ) с трудом печатает одним пальцем.
Ещё - как-то сразу заинтересовал пункт: Внимание!! если надо сложить два числа...
Набрал: var a = 1;
var b = 3;
var n = a + b;
alert(n);
Пишет: 4. Что я делаю не так ?
Насчёт [чтоб кнопка не только меняла иконку но и нажималась]
и [сделал чтоб вставленный код выделялся после вставки]
я не понял в чём смысл ( только не сочти за претензию или
за насмешку, я, пока, действительно не понял приемуществ... )
В остальном - буду обдумывать дальше.
Отсутствует
что интересно вводим цифру через промпт, для цикла for эта переменная число, для операции вычитания тоже а вот при сложении это символ..
Промпт возвращает именно строку. Ни переменная цикла, ни операнд вычитания строкой быть не могут, поэтому они неявно приводятся к числу (при наличии такой возможности). Операция "+" же для строк определена - это конкатенация, поэтому при сложении преобразования в число не производится, но наоборот, к строке неявно приводится второй (числовой) операнд:
Результат: 2 и 53.
Отредактировано hydrolizer (03-08-2012 18:29:26)
Отсутствует
СКМ - Стандартное меню кнопки вызываемое по пкм
то бишь чтоб стандартное меню кнопки было на среднем клике а правы и левый были свободны для каких либо действий
//настройка функций кликов мыши(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(); } };
Отсутствует
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). Но тогда придется шифровать по постоянному ключу, хранимому где-то в настройках (например), что тоже не особенно хорошо в плане секьюрности. Ну, и опять же - хранение пароля в настройках, откуда его можно очень запросто удалить.
Отсутствует
зы гораздо эффективнее чтоб при вводе неправильного пароля ФФ запускался но с чистым профилем
Гораздо эффективнее делать так, как это принято делать - при том, что все средства для этого есть, и они не требуют чрезмерных усилий. Чтобы хотя бы не терять профпригодность.
Отсутствует
ты не понял видимо что все твои извраты с шифрованием
1. Это не изврат. 10 строчек кода.
2. Речь шла не о надежности защиты, а о грамотности реализации. Для кого-то это не пустой звук.
3. И да, совет был адресован bunda1, если что.
Добавлено 04-08-2012 09:01:10
лучше подскажи как закодированный в base64 бинарный файл сохранить на диск в нормальном виде?
window.btoa + nsIFileOutputStream + FileUtils.openSafeFileOutputStream/NetUtil.asyncCopy
Отредактировано hydrolizer (04-08-2012 09:01:10)
Отсутствует
hydrolizer
Спасибо за идею и коды, действительно сохранение пароля через nsILoginManager получится более безопасная.
Но возникает вопрос как кнопке без prefs.js узнать что она включена, иначе нет смысла в nsILoginManager ведь можно найти в prefs.js настройку которая отвечает за включение кнопки и удалить.
Хотя можно настройку замаскировать в prefs.js под стандартною типа - bidi.pass.
Или может лучше через nsILoginManager записывать пароль содержащую информацию о том что кнопка включена типа true_pass и false_pass ?
Но главный вопрос как сделатъ что бы включеная кнопка не срабатывала после рестарта ?
Отредактировано bunda1 (04-08-2012 12:11:43)
Отсутствует
набил менюху сниппетами для новичка
chrome://browser/content/browser.js
Так что лучше везде вместо getBrowser() использовать gBrowser.
Недостаточно проверить ссылку – в процессе загрузки сначала тоже будет 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);
У этого кода очень много побочных эффектов.
Потеряется текст из полей для ввода и состояние контролов. И сбросятся все обработчики событий, добавленные через 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()];
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
okkamas_knife, задумал сделать дополнительный режим, чтобы
кнопки раскрывали свои менюшки при наведении мыши,
переписал всё заново, на Firefox 10.0 у меня вроде работает,
а вот на Palemoon 9.2 - уже глючит это подозрительно...
Ну, переключается - там внизу кнопка с мышкой,
ещё отменено выделение, если указана позиция курсора.
Вобщем посмотри.
Упс ! [ Сообщение не может быть длиннее 65535 символов ... ]
не знаю что делать, в кнопке набралось 82 590,
положу пока здесь
Отсутствует
okkamas_knife, OK, ты прав, не стоит, сочтём за неудачный эксперимент и забудем
Относительно указателя курсора думал так: иногда после операции вставки было бы
полезно, чтобы курсор сразу стоял где-то в нужном месте посередине кода.
Простейший пример - alert, допустим указатель это § , тогда в коде пишем
alert("§"); и тогда сразу после вставки курсорчик уже стоит-мигает между кавычек.
Хотя возможно это тоже бесполезная фича ...
Насчёт предложеных тобой тем, попробую подумать, но уверен что сломаю себе -moz'г ,
я ведь едва-ли на один процент больше, чем абсолютный чайник
Отсутствует
okkamas_knife, ну сам редактор открыть во вкладке я не смог,
но попробовал сделать через посредника, то есть во вкладке открывается
пустой экземпляр для работы, а он уже передаёт изменения собственно редактору,
который тоже открыт, но свёрнут. Осторожно! Не тестируй на важных кнопках.
Ну и конечно CustomPaste там не действует (пока?)
Вот она - альфа-болванка:
(UPD: Вот незадача, сейчас проверил: десятый firefox - нормально, palemoon 9.2 - не работает
Похоже история повторяется. Ты скажи точно на каком фоксе ты тестируешь кнопки.
Я себе такой-же заведу, и буду ещё и на нём проверять. )
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)
Отсутствует
а подскажите как сделать или может у кого есть код кнопки, которая копирует исходный код страницы (из активной вкладки) в буфер обмена ?
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);
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Осторожно, это все тестовые версии!
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
+ Добавлена возможность выбрать корневую папку, содержащую все имеющиеся закладки
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Extensions Developer Tools 0.1.0pre11 (2012-08-06)
+ В меню настроек добавлена javascript.options.strict.debug (работает только в отладочных сборках, отладочность сборки определяется по выставленному в false значению по умолчанию для general.warnOnAboutConfig)
Отредактировано Infocatcher (06-08-2012 21:14:11)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
установил в фаерфокс кнопку отсюда http://forum.mozilla-russia.org/viewtopic.php?pid=525792#p525792
она работает, но я пытаюсь вписать адрес (мне нужен вот такой chrome://fvd.speeddial/content/fvd_about_blank.html, пробовал и вот такой about:blank) выскакивает сообщение:
"кнопка не может быть создана, потому что содержит ошибки!" что я в своих действиях неправильно делаю?
Отсутствует