Proxy( Firefox 24 + )
Автор: bunda1
Версия: от 13.05.2019.
Описание:
Кнопка быстро переключает настройки прокси для доступа в интернет - на режим Без прокси или Ручная настройка сервиса прокси при этом соответственно меняется иконка кнопки. Позволяет быстро открыть настройки прокси, можно открывать настройки прокси как вкладку, если эта возможность включена в настройках кнопки. Кнопка будет сама переключатся на режим Без прокси при выходе из браузера, если эта возможность включена в настройках кнопки. Кнопка добавляет в контекстное меню выделенного текста на странице новый пункт Добавить прокси, если эта возможность включена в настройках кнопки, пункт устанавливает адрес и порт прокси сервера для браузера. Можно добавлять выделенный на странице адрес и порт прокси по отдельности или вместе, например: 94.154.31.12 и 8090 или 122.96.59.102:81 или 1.63.18.22  8080. В сплывающей подсказке у кнопки отображается текущие настройки прокси: порт и адрес.

Скриншот настройки кнопки в меню кнопки и пункт меню Добавить прокси в контекстном меню:
0e9de6afad9985addda2658a75d66247.png

6219cb434d2e4a062ef687e57df04165.jpg


Клики на кнопке:
ЛКМ => Переключить прокси,
Длинный ЛКМ => Открыть настройки прокси,
ПКМ => Открыть меню с настройками кнопки,
Двойной ПКМ => Стандартное меню кнопки.

Код кнопки:

Выделить код

Код:

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%3EProxy%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAAYOQAAWJ2kADh1fAAAEKAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAEEJBE4ULQ+fZ38ea/H/muhuv8gW3ztAxclewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLNlO7PH+n/3Sgu/281eP9zuHr/mWZuP4XXon/ABAeZwAAAAAAAAAAAQEBAQAAAAAZGBoTKScsLyYkKjErJSgnIC8/XgZQgP9BcZb8b5q3/oiux/+qx9r/a5Ow+zFtlv8PRWrGAAACAAEBAQMHBwcbAAAAD2BeYn769/3/4eDm/Onh5v+DnrX/A0t9/j1vlv+FqMH/lrfN/7rS4f9+pL3+M26X/xJYhu0DEiMdAAAAAAEBAQEAAAABBgUGEaSiprbPzNP239fb/4OcsP4aXYr/RHOZ/5Gwx//T5e//mrjO/3KYtv40apP/D0x77AUTIhwhHyMmeXV7mXt4fqJ3dHmce3d+n6eirODMx8r/o6q3/kN4nf92m7n/vtPj/9Hg7P/C1OL/eJq1+jtulv8bSnC7AAEGAF1aYH7//////f39/P//////////////////////////lbHC/3ilvf/K4Oz/2OXv/7nN3f6FqcP/VIiv/AseMT8AAAAAXFtef+LY5/+AT534fU2d+4VXovyKXaf+jGGp/5BlrP+GWKT/ZmGc/4Cduf+ivtD+k7HH/1t/neUTJjhFAAAAAAEBAQJfXmB/3tHl/14giPxcIYr/Zy+S/244mP9yPZv/cj6c/3M9nP9wNpf/YDSP/1k0ivu7tdP/YmNmiAAAAAAEBAQGAAAAAF9eYIDg1Ob/cDqV/HE9mv9/TaT/hler/4tdr/+NXrD/iFms/4JTqP9+SqP/cjqW+9zJ4/9ubW6JAAAAAAMDBAQAAAAAX15ggODU5v94RZz8e0mi/4pcrv+Vabf/nXO9/6J5wf+jfMH/oXq//513u/+NY6z718bh/2pqa4gAAAAABAMEBAAAAABfXWCA4NTm/4VWpfyPY7L/onvA/7GPzP+8ndT/waTY/8Cj1/+6nNL/tZfO/6F9uvvYx+L/ampriAAAAAAEAwQEAAAAAF9eYH/e0uX/n3u5/LKTzP/Bpdf/zrbh/9jC6f/bxuv/2cTp/9O+5P/Qu+H/uJ3L+9jI4f9qaWuHAAAAAAQDBAQAAAAAX15gf97S5P+gfbf5sZPH/LqdzfzCqNT8ybHZ/My12vzKs9n8xq/W/Mav1fywksL418fh/2tqbIkAAAAABAMEBAAAAABZVlt3+fX8/+DU5vzj1un/5tvt/+ne7//r4PH/6t7w/+fb7f/k2Ov/4dPn/9nM4Pv79v//ZGFnfwAAAAADAwQEAAAAABcVGRpZVlt6YF9hgWBgYoBhYWKAYmFigGJiY4BiYmOAYmFigGFhYoBgYGGAX15ggF1aX4AbGR0eAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20Proxy%2C%20%u043E%u0442%2013.05.2019.%0A%0A%0A//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Athis.onmousedown%20%3De%3D%3E%20%7B%0A%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u0434%u043B%u0438%u043D%u043D%u044B%u0439%20%u043B%u0435%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%0A%20%20%20%20%20%20%20%20self.timer%20%3D%20setTimeout%28%28%29%3D%3E%20%7B%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20self.onmouseup%20%3D%20%27%27%3B%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20cbu.getPrefs%28%22CB.Proxy.connectionsInTab%22%29%20%3F%20openConnectionsInTab%28%29%20%3A%20openConnections%28%29%3B%0A%20%20%20%20%20%20%20%20%7D%2C%20500%29%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20this.onmouseup%20%3De%3D%3E%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u043B%u0435%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%0A%20%20%20%20%20%20%20%20if%20%28%20e.button%20%29%20return%3B%0A%20%20%20%20%20%20%20%20clearTimeout%28self.timer%29%3B%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.type%22%2C%20cbu.getPrefs%28%22network.proxy.type%22%29%20%3F%200%20%3A%201%29%3B%0A%20%20%20%7D%0A%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%20%29%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u043F%u0440%u0430%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%0A%20%20%20%20%20%20%20%20menuPopup.openPopup%28this%2C%20%22after_start%22%29%3B%20%20%20%0A%7D%3B%0Athis.oncontextmenu%20%3D%20e%20%3D%3E%20e.detail%20%3D%3D%202%20%26%26%20%21menuPopup.hidePopup%28%29%0A%20%20%20%20%20%7C%7C%20e.ctrlKey%20%7C%7C%20%21%21menuPopup.openPopup%28this%2C%20%22after_start%22%29%3B%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Athis.onmouseover%20%3D%28%29%3D%3E%0A%20%20%20this.tooltipText%20%3D%20%22Proxy%20%5Cn%u041B%3A%20%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u043F%u0440%u043E%u043A%u0441%u0438%20%5Cn%u0414%u041B%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%u041F%3A%20%20M%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%20%5Cn%u0414%u041F%3A%20CB%20%u043C%u0435%u043D%u044E%20%5Cn%5Cn%u0422%u0435%u043A%u0443%u0449%u0438%u0435%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%3A%20%22%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5CnIP%3A%20%22%20+%20cbu.getPrefs%28%22network.proxy.http%22%29%20+%20%22%5Cn%u041F%u043E%u0440%u0442%3A%20%22+%20cbu.getPrefs%28%22network.proxy.http_port%22%29%3B%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Avar%20array%20%3D%20%5B%0A%20%20%20%7B%20label%3A%20%22%u0414%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043E%u043C%20%u043C%u0435%u043D%u044E%22%2C%20value%3A%20%27CB.Proxy.inContextMenu%27%20%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u041E%u0442%u043A%u0440%u044B%u0432%u0430%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u043A%u0430%u043A%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%22%2C%20value%3A%20%27CB.Proxy.connectionsInTab%27%20%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u043D%u0430%20%u0440%u0435%u0436%u0438%u043C%20%27%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%27%20%u043F%u0440%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0438%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%22%2C%20value%3A%20%27CB.Proxy.reset%27%20%7D%20%20%20%20%0A%5D%3B%0A%0Avar%20menuPopup%20%3D%20document.getElementById%28%27mainPopupSet%27%29.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0Aarray.forEach%28%28m%29%3D%3E%20%7B%0A%20%20%20var%20mItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20mItem.setAttribute%28%22label%22%2C%20m.label%29%3B%0A%20%20%20mItem.setAttribute%28%27type%27%2C%20%27checkbox%27%29%3B%0A%20%20%20mItem.setAttribute%28%27checked%27%2C%20cbu.getPrefs%28m.value%29%20%29%3B%0A%20%20%20mItem.onclick%20%3D%28%29%3D%3E%20cbu.setPrefs%28m.value%2C%20%21cbu.getPrefs%28m.value%29%29%3B%20%20%0A%20%20%20menuPopup.appendChild%28mItem%29%3B%0A%7D%29%3B%0AaddDestructor%28%28%29%3D%3E%20menuPopup.remove%28%29%20%29%3B%0A%0A%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043E%u043A%u043D%u0435%20...................%20%20%0Afunction%20openConnections%28%29%20%7B%0A%20%20%20self.win%20%26%26%20self.win.close%28%29%3B%0A%20%20%20self.win%20%3D%20openDialog%28%22chrome%3A//browser/content/preferences/connection.xul%22%2C%20%22Proxy%22%2C%20%22centerscreen%22%29%3B%0A%20%20%20%0A%20%20%20//%20%u0434%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%20%22prefwindow%22%0A%20%20%20self.win.addEventListener%28%22load%22%2C%20function%20f%28e%29%20%7B%0A%20%20%20%20%20%20%20this.removeEventListener%28%22load%22%2C%20f%2C%20true%29%3B%20%0A%20%20%20%20%20%20%20e.target.documentElement.setAttribute%28%22type%22%2C%20%22prefwindow%22%29%3B%0A%20%20%20%7D%2C%20true%29%3B%0A%0A%20%20%20//%20%u0437%u0430%u043A%u0440%u044B%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u043F%u043E%20%u043A%u043B%u0438%u043A%u0443%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%0A%20%20%20gBrowser.addEventListener%28%22click%22%2C%20function%20c%28%29%20%7B%0A%20%20%20%20%20%20this.removeEventListener%28%22click%22%2C%20c%29%3B%0A%20%20%20%20%20%20try%20%7B%20self.win.close%28%29%20%7D%20catch%28e%29%20%7B%7D%3B%20%0A%20%20%20%7D%2C%20true%29%3B%0A%7D%3B%0A%0A%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20...................%0Afunction%20openConnectionsInTab%28%29%20%7B%0A%20%20%20var%20connections%20%3D%20gBrowser.getBrowserForTab%28gBrowser.selectedTab%20%3D%20gBrowser.addTab%28%22chrome%3A//browser/content/preferences/connection.xul%22%2C%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%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20triggeringPrincipal%3A%20Services.scriptSecurityManager.getSystemPrincipal%28%29%2C%7D%29%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20//%20o%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%20%u0436%u0434%u0435%u0442%20%u043F%u043E%u043A%u0430%20%u043E%u0442%u043A%u0440%u043E%u0435%u0442%u0441%u044F%20%u043F%u0440%u043E%u043A%u0441%u0438%2C%20%u0443%u0434%u0430%u043B%u044F%u0435%u0442%20%u0441%u0435%u0431%u044F%20%u0438%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%0A%20%20%20connections.addEventListener%28%22pageshow%22%2C%20function%20c%28e%29%20%7B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20this.removeEventListener%28e.type%2C%20c%29%3B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20e.originalTarget.documentElement.setAttribute%28%22type%22%2C%20%22prefwindow%22%29%3B%0A%20%20%20%7D%29%20%20%20%0A%7D%3B%0A%0A%0A//%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0438%u0432%u0430%u0442%u044C%20%u043D%u0443%u0436%u043D%u0443%u044E%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u0440%u0438%20%u0441%u0442%u0430%u0440%u0442%u0435%20%u0431%u0430%u0443%u0437%u0435%u0440%u0430%20%u0438%u043B%u0438%20%u043F%u0440%u0438%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%u0445%20%u0432%20%27about%3Aconfig%27%20...................%0Avar%20%20s%20%3D%20%22network.proxy.type%22%3B%0Afunction%20toggleImage%28%29%20%7B%0A%20%20%20var%20icon%20%3D%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0A%20%20%20icon.src%20%3D%20%21cbu.getPrefs%28s%29%0A%20%20%20%3F%20self.image%0A%20%20%20%3A%20%27data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAA4GQAAnFmkAHQ5fAAQAKAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAQBJBFQOLQ+nX38ecev/mu6of8gfFvtAyUXewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLUza7PKd//3S7oP2849X9zuvh/mW4mf4XiV7/AB4QZwAAAAAAAAAAAQEBAQAAAAAZGhgTKSwnLyYqJDErKCUnID8vXgaAUP9BlnH8b7ea/ojHrv+q2sf/a7CT+zGWbf8PakXGAAIAAAEBAQMHBwcbAAAAD2BiXn76/ff/4ebg/Onm4f+DtZ7/A31L/j2Wb/+Fwaj/ls23/7rh0v9+vaT+M5du/xKGWO0DIxIdAAAAAAEBAQEAAAABBgYFEaSmorbP08z239vX/4OwnP4ail3/RJlz/5HHsP/T7+X/ms64/3K2mP40k2r/D3tM7AUiExwhIx8meXt1mXt+eKJ3eXSce353n6esouDMysf/o7eq/kOdeP92uZv/vuPT/9Hs4P/C4tT/eLWa+juWbv8bcEq7AAYBAF1gWn7//////f39/P//////////////////////////lcKx/3i9pf/K7OD/2O/l/7ndzf6Fw6n/VK+I/AsxHj8AAAAAXF5bf+Ln2P+AnU/4fZ1N+4WiV/yKp13+jKlh/5CsZf+GpFj/Zpxh/4C5nf+i0L7+k8ex/1udf+UTOCZFAAAAAAEBAQJfYF5/3uXR/16IIPxciiH/Z5Iv/26YOP9ymz3/cpw+/3OcPf9wlzb/YI80/1mKNPu707X/YmZjiAAAAAAEBAQGAAAAAF9gXoDg5tT/cJU6/HGaPf9/pE3/hqtX/4uvXf+NsF7/iKxZ/4KoU/9+o0r/cpY6+9zjyf9ubm2JAAAAAAMEAwQAAAAAX2BegODm1P94nEX8e6JJ/4quXP+Vt2n/nb1z/6LBef+jwXz/ob96/527d/+NrGP71+HG/2praogAAAAABAQDBAAAAABfYF2A4ObU/4WlVvyPsmP/osB7/7HMj/+81J3/wdik/8DXo/+60pz/tc6X/6G6ffvY4sf/amtqiAAAAAAEBAMEAAAAAF9gXn/e5dL/n7l7/LLMk//B16X/zuG2/9jpwv/b68b/2enE/9Pkvv/Q4bv/uMud+9jhyP9qa2mHAAAAAAQEAwQAAAAAX2Bef97k0v+gt335sceT/LrNnfzC1Kj8ydmx/MzatfzK2bP8xtav/MbVr/ywwpL41+HH/2tsaokAAAAABAQDBAAAAABZW1Z3+fz1/+Dm1Pzj6db/5u3b/+nv3v/r8eD/6vDe/+ft2//k69j/4efT/9ngzPv7//b/ZGdhfwAAAAADBAMEAAAAABcZFRpZW1Z6YGFfgWBiYIBhYmGAYmJhgGJjYoBiY2KAYmJhgGFiYYBgYWCAX2BegF1fWoAbHRkeAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%27%3B%0A%7D%3B%20%20%0AtoggleImage%28%29%3B%0AServices.prefs.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28%28%29%3D%3E%20Services.prefs.removeObserver%28s%2C%20toggleImage%29%29%3B%0A%0A%0A%0A//%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u043D%u0430%20%u0440%u0435%u0436%u0438%u043C%20%27%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%27%20%u043F%u0440%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0438%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20...................%0Avar%20toggleButton%20%3D%20%7B%0A%20%20%20observe%3A%28subject%2C%20topic%2C%20data%29%3D%3E%20%7B%0A%20%20%20%20%20%20cbu.getPrefs%28%22CB.Proxy.reset%22%29%20%26%26%20data%20%3D%3D%20%22shutdown%22%20%26%26%20cbu.setPrefs%28%22network.proxy.type%22%2C%200%29%3B%20%20%0A%20%20%20%20%7D%0A%7D%3B%0AServices.obs.addObserver%28toggleButton%2C%20%22quit-application%22%2C%20false%29%3B%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0435%u043C%20%u043C%u0435%u043D%u044E%20%u0434%u043B%u044F%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u043C%20%u043C%u0435%u043D%u044E%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20...................%0Avar%20contextMenu%20%3D%20document.getElementById%28%22contentAreaContextMenu%22%29%3B%0Avar%20menuitem%20%3D%20document.createElement%28%22menuitem%22%29%3B%20%20%20%20%20%20%0Amenuitem.setAttribute%28%22label%22%2C%20%22%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u043F%u0440%u043E%u043A%u0441%u0438%22%29%3B%20%0Amenuitem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%0Amenuitem.setAttribute%28%22image%22%2C%20self.image%29%3B%0Amenuitem.onclick%20%3D%28%29%3D%3E%20addNewProxy%28menuitem%29%3B%0AcontextMenu.appendChild%28menuitem%29%3B%20//%20%u043A%u0430%u043A%20%u043F%u043E%u0441%u043B%u0435%u0434%u043D%u0438%u0439%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E%0AaddDestructor%28%28%29%3D%3E%20menuitem.remove%28%29%29%3B%0AaddEventListener%28%22popupshowing%22%2C%20%28%29%3D%3E%20%7B%0A%20%20%20menuitem.hidden%20%3D%20%21cbu.getPrefs%28%22CB.Proxy.inContextMenu%22%29%20%7C%7C%20%21gContextMenu.isContentSelected%3B%20//%20%21gContextMenu.isTextSelected%3B%0A%7D%2C%20false%2C%20contextMenu%29%3B%0A%20%20%0A%20%20%0A//%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%20...................%0Afunction%20addNewProxy%28menuitem%29%20%7B%0A%20%20%20var%20sel%20%3D%20gBrowser.contentDocument%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20gBrowser.contentDocument.defaultView.getSelection%28%29.toString%28%29%20//%20Pale%20Moon%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20gContextMenuContentData.selectionInfo.fullText%3B%20//%20Firefox%0A%20%20%20%0A%20%20%20sel%20%3D%20sel.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%20%22%22%29%3B%20//%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%2C%20%u0441%u043B%u0435%u0432%u0430%20%u0438%20%u0441%u043F%u0440%u0430%u0432%u0430%20%u043E%u0442%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%20%20%20sel%20%3D%20sel.replace%28/%5Cs+/g%2C%22%3A%22%29%3B%20%20%20%20%20%20%20//%20%u0437%u0430%u043C%u0435%u043D%u0438%u0442%u044C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%20%u0432%u043D%u0443%u0442%u0440%u0438%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%0A%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u043F%u043E%u0440%u0442%20...%0A%20%20%20if%20%28%20sel.length%20%3C%206%20%26%26%20isFinite%28sel%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u043F%u043E%u0440%u0442%27%3B%0A%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.http_port%22%2C%20+sel%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%0A%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u0430%u0434%u0440%u0435%u0441%20...%0A%20%20%20if%20%28%20sel.length%20%3E%205%20%26%26%20%21/%3A/.test%28sel%29%20%26%26%20sel.split%28%22.%22%29.length%20%3D%3D%204%20%29%20%7B%0A%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u0430%u0434%u0440%u0435%u0441%27%3B%0A%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.http%22%2C%20convertFromUnicode%28%22UTF-8%22%2C%20sel%29%29%3B%20%20%0A%20%20%20%20%20%20%20%20%7D%20%20%20%0A%20%20%20%20%20%0A%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0430%u0434%u0440%u0435%u0441%20%u0438%20%u043F%u043E%u0440%u0442%20...%20%20%20%20%0A%20%20%20if%20%28%20sel.length%20%3E%205%20%26%26%20/%3A/.test%28sel%29%20%26%26%20sel.split%28%22%3A%22%29.length%20%3D%3D%202%20%26%26%20sel.split%28%22.%22%29.length%20%3D%3D%204%20%29%20%7B%0A%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u0430%u0434%u0440%u0435%u0441%20%u0438%20%u043F%u043E%u0440%u0442%27%3B%0A%20%20%20%20%20%20%20%20var%20arr%20%3D%20sel.split%28%22%3A%22%29%2C%20IP%20%3D%20arr%5B0%5D%2C%20port%20%3D%20arr%5B1%5D%3B%0A%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.http_port%22%2C%20+port%29%3B%0A%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.http%22%2C%20convertFromUnicode%28%22UTF-8%22%2C%20IP%29%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%0A%0A%20%20%20//%20%u0432%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0440%u044F%u0434%u043E%u043C%20%u0441%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u043C%20%u0442%u0435%u043A%u0441%u0442%u043E%u043C%20...%20%20%20%20%20%0A%20%20%20var%20mainPopupSet%20%3D%20document.getElementById%28%27mainPopupSet%27%29%3B%0A%20%20%20var%20tooltip%20%3D%20mainPopupSet.appendChild%28document.createElement%28%22tooltip%22%29%29%3B%0A%20%20%20tooltip.style.cssText%20%3D%20%22color%3A%20red%20%21important%3B%20font-weight%3A%20bold%20%21important%3B%20font-size%3A%2014px%20%21important%3B%20-moz-box-orient%3A%20horizontal%3B%20text-align%3A%20center%3B%22%3B%0A%20%20%20%0A%20%20%20var%20image%20%3D%20tooltip.appendChild%28document.createElement%28%22image%22%29%29%3B%0A%20%20%20image.setAttribute%28%22src%22%2C%20self.image%29%3B%0A%20%20%20%20%20%20%0A%20%20%20var%20label%20%3D%20tooltip.appendChild%28document.createElement%28%22label%22%29%29%3B%0A%20%20%20label.setAttribute%28%22value%22%2C%20%22%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0435%u043D%20%22%20+%20lab%20+%20%22%20%u043F%u0440%u043E%u043A%u0441%u0438%3A%20%22%20+%20sel%29%3B%0A%0A%20%20%20tooltip.openPopup%28menuitem.parentNode%2C%20%22before_start%22%29%3B%0A%20%20%20setTimeout%28%28%29%3D%3E%20mainPopupSet.removeChild%28tooltip%29%2C%203000%29%3B%0A%7D%3B%0A%0A%20%20%0A//%20%u041A%u043E%u043D%u0432%u0435%u0440%u0442%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u044E%u043D%u0438%u043A%u043E%u0434%20.............%20%20%0Afunction%20convertFromUnicode%28charset%2C%20str%29%20%7B%0A%20%20%20var%20converter%20%3D%20Cc%5B%22@mozilla.org/intl/scriptableunicodeconverter%22%5D.createInstance%28Ci.nsIScriptableUnicodeConverter%29%3B%0A%20%20%20converter.charset%20%3D%20charset%3B%0A%20%20%20str%20%3D%20converter.ConvertFromUnicode%28str%29%3B%0A%20%20%20return%20str%20+%20converter.Finish%28%29%3B%0A%7D%3B%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

Код инициализации:

Выделить код

Код:

// Proxy, от 13.05.2019.


// Настройка функций кликов мыши для кнопки ...................
this.onmousedown =e=> {

   if ( e.button == 0 )                  // длинный левый клик
        self.timer = setTimeout(()=> {     
           self.onmouseup = '';           
           cbu.getPrefs("CB.Proxy.connectionsInTab") ? openConnectionsInTab() : openConnections();
        }, 500);
        
   this.onmouseup =e=> {                  // левый клик
        if ( e.button ) return;
        clearTimeout(self.timer);           
        cbu.setPrefs("network.proxy.type", cbu.getPrefs("network.proxy.type") ? 0 : 1);
   }
   
   if ( e.button == 2 )                  // правый клик
        menuPopup.openPopup(this, "after_start");   
};
this.oncontextmenu = e => e.detail == 2 && !menuPopup.hidePopup()
     || e.ctrlKey || !!menuPopup.openPopup(this, "after_start");


// Подсказка для кнопки ...................
this.onmouseover =()=>
   this.tooltipText = "Proxy \nЛ:  Переключить прокси \nДЛ: Открыть настройки прокси"
                    + "\nП:  Mеню кнопки \nДП: CB меню \n\nТекущие настройки прокси: " 
                    + "\nIP: " + cbu.getPrefs("network.proxy.http") + "\nПорт: "+ cbu.getPrefs("network.proxy.http_port");


// Создать меню для кнопки ...................
var array = [
   { label: "Добавление прокси в контекстом меню", value: 'CB.Proxy.inContextMenu' },
   { label: "Открывать настройки прокси как вкладку", value: 'CB.Proxy.connectionsInTab' },
   { label: "Переключать на режим 'Без прокси' при закрытии браузера ", value: 'CB.Proxy.reset' }    
];

var menuPopup = document.getElementById('mainPopupSet').appendChild(document.createElement("menupopup"));
array.forEach((m)=> {
   var mItem = document.createElement("menuitem");
   mItem.setAttribute("label", m.label);
   mItem.setAttribute('type', 'checkbox');
   mItem.setAttribute('checked', cbu.getPrefs(m.value) );
   mItem.onclick =()=> cbu.setPrefs(m.value, !cbu.getPrefs(m.value));  
   menuPopup.appendChild(mItem);
});
addDestructor(()=> menuPopup.remove() );


// Функция открывает настройки прокси в окне ...................  
function openConnections() {
   self.win && self.win.close();
   self.win = openDialog("chrome://browser/content/preferences/connection.xul", "Proxy", "centerscreen");
   
   // добавить атрибут "prefwindow"
   self.win.addEventListener("load", function f(e) {
       this.removeEventListener("load", f, true); 
       e.target.documentElement.setAttribute("type", "prefwindow");
   }, true);

   // закрыть настройки прокси по клику на странице 
   gBrowser.addEventListener("click", function c() {
      this.removeEventListener("click", c);
      try { self.win.close() } catch(e) {}; 
   }, true);
};


// Функция открывает настройки прокси в вкладке ...................
function openConnectionsInTab() {
   var connections = gBrowser.getBrowserForTab(gBrowser.selectedTab = gBrowser.addTab("chrome://browser/content/preferences/connection.xul", {
                                               triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),})); 
          
   // oбработчик ждет пока откроется прокси, удаляет себя и добавляет атрибут
   connections.addEventListener("pageshow", function c(e) {         
      this.removeEventListener(e.type, c);         
      e.originalTarget.documentElement.setAttribute("type", "prefwindow");
   })   
};


// Установливать нужную иконку кнопки при старте баузера или при изменениях в 'about:config' ...................
var  s = "network.proxy.type";
function toggleImage() {
   var icon = self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon");
   icon.src = !cbu.getPrefs(s)
   ? self.image
   : 'data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAA4GQAAnFmkAHQ5fAAQAKAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAQBJBFQOLQ+nX38ecev/mu6of8gfFvtAyUXewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLUza7PKd//3S7oP2849X9zuvh/mW4mf4XiV7/AB4QZwAAAAAAAAAAAQEBAQAAAAAZGhgTKSwnLyYqJDErKCUnID8vXgaAUP9BlnH8b7ea/ojHrv+q2sf/a7CT+zGWbf8PakXGAAIAAAEBAQMHBwcbAAAAD2BiXn76/ff/4ebg/Onm4f+DtZ7/A31L/j2Wb/+Fwaj/ls23/7rh0v9+vaT+M5du/xKGWO0DIxIdAAAAAAEBAQEAAAABBgYFEaSmorbP08z239vX/4OwnP4ail3/RJlz/5HHsP/T7+X/ms64/3K2mP40k2r/D3tM7AUiExwhIx8meXt1mXt+eKJ3eXSce353n6esouDMysf/o7eq/kOdeP92uZv/vuPT/9Hs4P/C4tT/eLWa+juWbv8bcEq7AAYBAF1gWn7//////f39/P//////////////////////////lcKx/3i9pf/K7OD/2O/l/7ndzf6Fw6n/VK+I/AsxHj8AAAAAXF5bf+Ln2P+AnU/4fZ1N+4WiV/yKp13+jKlh/5CsZf+GpFj/Zpxh/4C5nf+i0L7+k8ex/1udf+UTOCZFAAAAAAEBAQJfYF5/3uXR/16IIPxciiH/Z5Iv/26YOP9ymz3/cpw+/3OcPf9wlzb/YI80/1mKNPu707X/YmZjiAAAAAAEBAQGAAAAAF9gXoDg5tT/cJU6/HGaPf9/pE3/hqtX/4uvXf+NsF7/iKxZ/4KoU/9+o0r/cpY6+9zjyf9ubm2JAAAAAAMEAwQAAAAAX2BegODm1P94nEX8e6JJ/4quXP+Vt2n/nb1z/6LBef+jwXz/ob96/527d/+NrGP71+HG/2praogAAAAABAQDBAAAAABfYF2A4ObU/4WlVvyPsmP/osB7/7HMj/+81J3/wdik/8DXo/+60pz/tc6X/6G6ffvY4sf/amtqiAAAAAAEBAMEAAAAAF9gXn/e5dL/n7l7/LLMk//B16X/zuG2/9jpwv/b68b/2enE/9Pkvv/Q4bv/uMud+9jhyP9qa2mHAAAAAAQEAwQAAAAAX2Bef97k0v+gt335sceT/LrNnfzC1Kj8ydmx/MzatfzK2bP8xtav/MbVr/ywwpL41+HH/2tsaokAAAAABAQDBAAAAABZW1Z3+fz1/+Dm1Pzj6db/5u3b/+nv3v/r8eD/6vDe/+ft2//k69j/4efT/9ngzPv7//b/ZGdhfwAAAAADBAMEAAAAABcZFRpZW1Z6YGFfgWBiYIBhYmGAYmJhgGJjYoBiY2KAYmJhgGFiYYBgYWCAX2BegF1fWoAbHRkeAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=';
};  
toggleImage();
Services.prefs.addObserver(s, toggleImage, false);
addDestructor(()=> Services.prefs.removeObserver(s, toggleImage));



// Переключать на режим 'Без прокси' при закрытии браузера если это разрешено в 'about:config' ...................
var toggleButton = {
   observe:(subject, topic, data)=> {
      cbu.getPrefs("CB.Proxy.reset") && data == "shutdown" && cbu.setPrefs("network.proxy.type", 0);  
    }
};
Services.obs.addObserver(toggleButton, "quit-application", false);


// Создаем меню для добавление прокси в контекстном меню выделенного текста на странице ...................
var contextMenu = document.getElementById("contentAreaContextMenu");
var menuitem = document.createElement("menuitem");      
menuitem.setAttribute("label", "Добавить прокси"); 
menuitem.setAttribute("class", "menuitem-iconic");
menuitem.setAttribute("image", self.image);
menuitem.onclick =()=> addNewProxy(menuitem);
contextMenu.appendChild(menuitem); // как последний пункт меню
addDestructor(()=> menuitem.remove());
addEventListener("popupshowing", ()=> {
   menuitem.hidden = !cbu.getPrefs("CB.Proxy.inContextMenu") || !gContextMenu.isContentSelected; // !gContextMenu.isTextSelected;
}, false, contextMenu);
  
  
// добавление прокси ...................
function addNewProxy(menuitem) {
   var sel = gBrowser.contentDocument
                 ? gBrowser.contentDocument.defaultView.getSelection().toString() // Pale Moon  
                 : gContextMenuContentData.selectionInfo.fullText; // Firefox
   
   sel = sel.replace(/^\s+|\s+$/g, ""); // удалить пробелы, слева и справа от строки
   sel = sel.replace(/\s+/g,":");       // заменить пробелы внутри строки

   // если только порт ...
   if ( sel.length < 6 && isFinite(sel) ) { 
        var lab = 'порт';
        cbu.setPrefs("network.proxy.http_port", +sel);                    
        }
     
   // если только адрес ...
   if ( sel.length > 5 && !/:/.test(sel) && sel.split(".").length == 4 ) {
        var lab = 'адрес';
        cbu.setPrefs("network.proxy.http", convertFromUnicode("UTF-8", sel));  
        }   
     
   // если адрес и порт ...    
   if ( sel.length > 5 && /:/.test(sel) && sel.split(":").length == 2 && sel.split(".").length == 4 ) {
        var lab = 'адрес и порт';
        var arr = sel.split(":"), IP = arr[0], port = arr[1];
        cbu.setPrefs("network.proxy.http_port", +port);
        cbu.setPrefs("network.proxy.http", convertFromUnicode("UTF-8", IP));                      
        }     

   // всплывающая подсказка рядом с выделенным текстом ...     
   var mainPopupSet = document.getElementById('mainPopupSet');
   var tooltip = mainPopupSet.appendChild(document.createElement("tooltip"));
   tooltip.style.cssText = "color: red !important; font-weight: bold !important; font-size: 14px !important; -moz-box-orient: horizontal; text-align: center;";
   
   var image = tooltip.appendChild(document.createElement("image"));
   image.setAttribute("src", self.image);
      
   var label = tooltip.appendChild(document.createElement("label"));
   label.setAttribute("value", "Установлен " + lab + " прокси: " + sel);

   tooltip.openPopup(menuitem.parentNode, "before_start");
   setTimeout(()=> mainPopupSet.removeChild(tooltip), 3000);
};

  
// Конвертировать текст в юникод .............  
function convertFromUnicode(charset, str) {
   var converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Ci.nsIScriptableUnicodeConverter);
   converter.charset = charset;
   str = converter.ConvertFromUnicode(str);
   return str + converter.Finish();
};

Установка кнопки: устанавливаем расширение Сustom Buttons, копируем в адресную строку браузера код кнопки и жмём перейти в адресной строке. Откроется окно диалога добавления кнопки, нажимаем Ok, потом откроется сообщение о успешном создании кнопки, опять нажимаем Ok. Потом открываем настройку панелей инструментов, перетаскиваем кнопку в нужное место на панели и начинаем пользоваться кнопкой.

bunda1 пишет

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

В [nightly] этот пункт исчез.

bunda1
Конфликтует с Toggle Find. Если Toggle Find включена, то прокси не прописывается.

voqabuhe пишет

В [nightly] этот пункт исчез.

У меня сейчас на [nightly] вообще ни одна кнопка не работает. Расскажи как ты там на [nightly] заставляешь кнопки работать.

bunda1 пишет

У меня сейчас на [nightly] вообще ни одна кнопка не работает.

Custom Buttons • View topic - Custom Buttons broken on all Firefox versions higher than 43

bunda1 пишет

Расскажи как ты там на [nightly] заставляешь кнопки работать.

№8996

voqabuhe пишет
bunda1 пишет

Расскажи как ты там на [nightly] заставляешь кнопки работать.

№8996

Пробовал но тогда Сustom Buttons вообще не запускается :/

скрытый текст
a42a2da065194051d7b6c9ba85f121a4.png

Может дай скачать работающий Сustom Buttons.

bunda1
Вот пробуй custombuttons@xsms.org.7z

voqabuhe пишет

bunda1
Вот пробуй custombuttons@xsms.org.7z

Он удаляется из папки extensions при старте браузера, может там где то нужно отключить защиту?

Выделить код

Код:

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%3EProxy%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAAYOQAAWJ2kADh1fAAAEKAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAEEJBE4ULQ+fZ38ea/H/muhuv8gW3ztAxclewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLNlO7PH+n/3Sgu/281eP9zuHr/mWZuP4XXon/ABAeZwAAAAAAAAAAAQEBAQAAAAAZGBoTKScsLyYkKjErJSgnIC8/XgZQgP9BcZb8b5q3/oiux/+qx9r/a5Ow+zFtlv8PRWrGAAACAAEBAQMHBwcbAAAAD2BeYn769/3/4eDm/Onh5v+DnrX/A0t9/j1vlv+FqMH/lrfN/7rS4f9+pL3+M26X/xJYhu0DEiMdAAAAAAEBAQEAAAABBgUGEaSiprbPzNP239fb/4OcsP4aXYr/RHOZ/5Gwx//T5e//mrjO/3KYtv40apP/D0x77AUTIhwhHyMmeXV7mXt4fqJ3dHmce3d+n6eirODMx8r/o6q3/kN4nf92m7n/vtPj/9Hg7P/C1OL/eJq1+jtulv8bSnC7AAEGAF1aYH7//////f39/P//////////////////////////lbHC/3ilvf/K4Oz/2OXv/7nN3f6FqcP/VIiv/AseMT8AAAAAXFtef+LY5/+AT534fU2d+4VXovyKXaf+jGGp/5BlrP+GWKT/ZmGc/4Cduf+ivtD+k7HH/1t/neUTJjhFAAAAAAEBAQJfXmB/3tHl/14giPxcIYr/Zy+S/244mP9yPZv/cj6c/3M9nP9wNpf/YDSP/1k0ivu7tdP/YmNmiAAAAAAEBAQGAAAAAF9eYIDg1Ob/cDqV/HE9mv9/TaT/hler/4tdr/+NXrD/iFms/4JTqP9+SqP/cjqW+9zJ4/9ubW6JAAAAAAMDBAQAAAAAX15ggODU5v94RZz8e0mi/4pcrv+Vabf/nXO9/6J5wf+jfMH/oXq//513u/+NY6z718bh/2pqa4gAAAAABAMEBAAAAABfXWCA4NTm/4VWpfyPY7L/onvA/7GPzP+8ndT/waTY/8Cj1/+6nNL/tZfO/6F9uvvYx+L/ampriAAAAAAEAwQEAAAAAF9eYH/e0uX/n3u5/LKTzP/Bpdf/zrbh/9jC6f/bxuv/2cTp/9O+5P/Qu+H/uJ3L+9jI4f9qaWuHAAAAAAQDBAQAAAAAX15gf97S5P+gfbf5sZPH/LqdzfzCqNT8ybHZ/My12vzKs9n8xq/W/Mav1fywksL418fh/2tqbIkAAAAABAMEBAAAAABZVlt3+fX8/+DU5vzj1un/5tvt/+ne7//r4PH/6t7w/+fb7f/k2Ov/4dPn/9nM4Pv79v//ZGFnfwAAAAADAwQEAAAAABcVGRpZVlt6YF9hgWBgYoBhYWKAYmFigGJiY4BiYmOAYmFigGFhYoBgYGGAX15ggF1aX4AbGR0eAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20Proxy%2C%20%u043E%u0442%2013.05.2019.%0A%0A%0A//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Athis.onmousedown%20%3De%3D%3E%20%7B%0A%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u0434%u043B%u0438%u043D%u043D%u044B%u0439%20%u043B%u0435%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%0A%20%20%20%20%20%20%20%20self.timer%20%3D%20setTimeout%28%28%29%3D%3E%20%7B%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20self.onmouseup%20%3D%20%27%27%3B%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20cbu.getPrefs%28%22CB.Proxy.connectionsInTab%22%29%20%3F%20openConnectionsInTab%28%29%20%3A%20openConnections%28%29%3B%0A%20%20%20%20%20%20%20%20%7D%2C%20500%29%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20this.onmouseup%20%3De%3D%3E%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u043B%u0435%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%0A%20%20%20%20%20%20%20%20if%20%28%20e.button%20%29%20return%3B%0A%20%20%20%20%20%20%20%20clearTimeout%28self.timer%29%3B%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.type%22%2C%20cbu.getPrefs%28%22network.proxy.type%22%29%20%3F%200%20%3A%201%29%3B%0A%20%20%20%7D%0A%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%20%29%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u043F%u0440%u0430%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%0A%20%20%20%20%20%20%20%20menuPopup.openPopup%28this%2C%20%22after_start%22%29%3B%20%20%20%0A%7D%3B%0Athis.oncontextmenu%20%3D%20e%20%3D%3E%20e.detail%20%3D%3D%202%20%26%26%20%21menuPopup.hidePopup%28%29%0A%20%20%20%20%20%7C%7C%20e.ctrlKey%20%7C%7C%20%21%21menuPopup.openPopup%28this%2C%20%22after_start%22%29%3B%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Athis.onmouseover%20%3D%28%29%3D%3E%0A%20%20%20this.tooltipText%20%3D%20%22Proxy%20%5Cn%u041B%3A%20%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u043F%u0440%u043E%u043A%u0441%u0438%20%5Cn%u0414%u041B%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%u041F%3A%20%20M%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%20%5Cn%u0414%u041F%3A%20CB%20%u043C%u0435%u043D%u044E%20%5Cn%5Cn%u0422%u0435%u043A%u0443%u0449%u0438%u0435%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%3A%20%22%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5CnIP%3A%20%22%20+%20cbu.getPrefs%28%22network.proxy.http%22%29%20+%20%22%5Cn%u041F%u043E%u0440%u0442%3A%20%22+%20cbu.getPrefs%28%22network.proxy.http_port%22%29%3B%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Avar%20array%20%3D%20%5B%0A%20%20%20%7B%20label%3A%20%22%u0414%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043E%u043C%20%u043C%u0435%u043D%u044E%22%2C%20value%3A%20%27CB.Proxy.inContextMenu%27%20%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u041E%u0442%u043A%u0440%u044B%u0432%u0430%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u043A%u0430%u043A%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%22%2C%20value%3A%20%27CB.Proxy.connectionsInTab%27%20%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u043D%u0430%20%u0440%u0435%u0436%u0438%u043C%20%27%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%27%20%u043F%u0440%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0438%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%22%2C%20value%3A%20%27CB.Proxy.reset%27%20%7D%20%20%20%20%0A%5D%3B%0A%0Avar%20menuPopup%20%3D%20document.getElementById%28%27mainPopupSet%27%29.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0Aarray.forEach%28%28m%29%3D%3E%20%7B%0A%20%20%20var%20mItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20mItem.setAttribute%28%22label%22%2C%20m.label%29%3B%0A%20%20%20mItem.setAttribute%28%27type%27%2C%20%27checkbox%27%29%3B%0A%20%20%20mItem.setAttribute%28%27checked%27%2C%20cbu.getPrefs%28m.value%29%20%29%3B%0A%20%20%20mItem.onclick%20%3D%28%29%3D%3E%20cbu.setPrefs%28m.value%2C%20%21cbu.getPrefs%28m.value%29%29%3B%20%20%0A%20%20%20menuPopup.appendChild%28mItem%29%3B%0A%7D%29%3B%0AaddDestructor%28%28%29%3D%3E%20menuPopup.remove%28%29%20%29%3B%0A%0A%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043E%u043A%u043D%u0435%20...................%20%20%0Afunction%20openConnections%28%29%20%7B%0A%20%20%20self.win%20%26%26%20self.win.close%28%29%3B%0A%20%20%20self.win%20%3D%20openDialog%28%22chrome%3A//browser/content/preferences/connection.xul%22%2C%20%22Proxy%22%2C%20%22centerscreen%22%29%3B%0A%20%20%20%0A%20%20%20//%20%u0434%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%20%22prefwindow%22%0A%20%20%20self.win.addEventListener%28%22load%22%2C%20function%20f%28e%29%20%7B%0A%20%20%20%20%20%20%20this.removeEventListener%28%22load%22%2C%20f%2C%20true%29%3B%20%0A%20%20%20%20%20%20%20e.target.documentElement.setAttribute%28%22type%22%2C%20%22prefwindow%22%29%3B%0A%20%20%20%7D%2C%20true%29%3B%0A%0A%20%20%20//%20%u0437%u0430%u043A%u0440%u044B%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u043F%u043E%20%u043A%u043B%u0438%u043A%u0443%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%0A%20%20%20gBrowser.addEventListener%28%22click%22%2C%20function%20c%28%29%20%7B%0A%20%20%20%20%20%20this.removeEventListener%28%22click%22%2C%20c%29%3B%0A%20%20%20%20%20%20try%20%7B%20self.win.close%28%29%20%7D%20catch%28e%29%20%7B%7D%3B%20%0A%20%20%20%7D%2C%20true%29%3B%0A%7D%3B%0A%0A%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20...................%0Afunction%20openConnectionsInTab%28%29%20%7B%0A%20%20%20var%20connections%20%3D%20gBrowser.getBrowserForTab%28gBrowser.selectedTab%20%3D%20gBrowser.addTab%28%22chrome%3A//browser/content/preferences/connection.xul%22%2C%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%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20triggeringPrincipal%3A%20Services.scriptSecurityManager.getSystemPrincipal%28%29%2C%7D%29%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20//%20o%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%20%u0436%u0434%u0435%u0442%20%u043F%u043E%u043A%u0430%20%u043E%u0442%u043A%u0440%u043E%u0435%u0442%u0441%u044F%20%u043F%u0440%u043E%u043A%u0441%u0438%2C%20%u0443%u0434%u0430%u043B%u044F%u0435%u0442%20%u0441%u0435%u0431%u044F%20%u0438%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%0A%20%20%20connections.addEventListener%28%22pageshow%22%2C%20function%20c%28e%29%20%7B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20this.removeEventListener%28e.type%2C%20c%29%3B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20e.originalTarget.documentElement.setAttribute%28%22type%22%2C%20%22prefwindow%22%29%3B%0A%20%20%20%7D%29%20%20%20%0A%7D%3B%0A%0A%0A//%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0438%u0432%u0430%u0442%u044C%20%u043D%u0443%u0436%u043D%u0443%u044E%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u0440%u0438%20%u0441%u0442%u0430%u0440%u0442%u0435%20%u0431%u0430%u0443%u0437%u0435%u0440%u0430%20%u0438%u043B%u0438%20%u043F%u0440%u0438%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%u0445%20%u0432%20%27about%3Aconfig%27%20...................%0Avar%20%20s%20%3D%20%22network.proxy.type%22%3B%0Afunction%20toggleImage%28%29%20%7B%0A%20%20%20var%20icon%20%3D%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0A%20%20%20icon.src%20%3D%20%21cbu.getPrefs%28s%29%0A%20%20%20%3F%20self.image%0A%20%20%20%3A%20%27data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAA4GQAAnFmkAHQ5fAAQAKAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAQBJBFQOLQ+nX38ecev/mu6of8gfFvtAyUXewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLUza7PKd//3S7oP2849X9zuvh/mW4mf4XiV7/AB4QZwAAAAAAAAAAAQEBAQAAAAAZGhgTKSwnLyYqJDErKCUnID8vXgaAUP9BlnH8b7ea/ojHrv+q2sf/a7CT+zGWbf8PakXGAAIAAAEBAQMHBwcbAAAAD2BiXn76/ff/4ebg/Onm4f+DtZ7/A31L/j2Wb/+Fwaj/ls23/7rh0v9+vaT+M5du/xKGWO0DIxIdAAAAAAEBAQEAAAABBgYFEaSmorbP08z239vX/4OwnP4ail3/RJlz/5HHsP/T7+X/ms64/3K2mP40k2r/D3tM7AUiExwhIx8meXt1mXt+eKJ3eXSce353n6esouDMysf/o7eq/kOdeP92uZv/vuPT/9Hs4P/C4tT/eLWa+juWbv8bcEq7AAYBAF1gWn7//////f39/P//////////////////////////lcKx/3i9pf/K7OD/2O/l/7ndzf6Fw6n/VK+I/AsxHj8AAAAAXF5bf+Ln2P+AnU/4fZ1N+4WiV/yKp13+jKlh/5CsZf+GpFj/Zpxh/4C5nf+i0L7+k8ex/1udf+UTOCZFAAAAAAEBAQJfYF5/3uXR/16IIPxciiH/Z5Iv/26YOP9ymz3/cpw+/3OcPf9wlzb/YI80/1mKNPu707X/YmZjiAAAAAAEBAQGAAAAAF9gXoDg5tT/cJU6/HGaPf9/pE3/hqtX/4uvXf+NsF7/iKxZ/4KoU/9+o0r/cpY6+9zjyf9ubm2JAAAAAAMEAwQAAAAAX2BegODm1P94nEX8e6JJ/4quXP+Vt2n/nb1z/6LBef+jwXz/ob96/527d/+NrGP71+HG/2praogAAAAABAQDBAAAAABfYF2A4ObU/4WlVvyPsmP/osB7/7HMj/+81J3/wdik/8DXo/+60pz/tc6X/6G6ffvY4sf/amtqiAAAAAAEBAMEAAAAAF9gXn/e5dL/n7l7/LLMk//B16X/zuG2/9jpwv/b68b/2enE/9Pkvv/Q4bv/uMud+9jhyP9qa2mHAAAAAAQEAwQAAAAAX2Bef97k0v+gt335sceT/LrNnfzC1Kj8ydmx/MzatfzK2bP8xtav/MbVr/ywwpL41+HH/2tsaokAAAAABAQDBAAAAABZW1Z3+fz1/+Dm1Pzj6db/5u3b/+nv3v/r8eD/6vDe/+ft2//k69j/4efT/9ngzPv7//b/ZGdhfwAAAAADBAMEAAAAABcZFRpZW1Z6YGFfgWBiYIBhYmGAYmJhgGJjYoBiY2KAYmJhgGFiYYBgYWCAX2BegF1fWoAbHRkeAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%27%3B%0A%7D%3B%20%20%0AtoggleImage%28%29%3B%0AServices.prefs.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28%28%29%3D%3E%20Services.prefs.removeObserver%28s%2C%20toggleImage%29%29%3B%0A%0A%0A%0A//%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u043D%u0430%20%u0440%u0435%u0436%u0438%u043C%20%27%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%27%20%u043F%u0440%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0438%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20...................%0Avar%20toggleButton%20%3D%20%7B%0A%20%20%20observe%3A%28subject%2C%20topic%2C%20data%29%3D%3E%20%7B%0A%20%20%20%20%20%20cbu.getPrefs%28%22CB.Proxy.reset%22%29%20%26%26%20data%20%3D%3D%20%22shutdown%22%20%26%26%20cbu.setPrefs%28%22network.proxy.type%22%2C%200%29%3B%20%20%0A%20%20%20%20%7D%0A%7D%3B%0AServices.obs.addObserver%28toggleButton%2C%20%22quit-application%22%2C%20false%29%3B%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0435%u043C%20%u043C%u0435%u043D%u044E%20%u0434%u043B%u044F%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u043C%20%u043C%u0435%u043D%u044E%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20...................%0Avar%20contextMenu%20%3D%20document.getElementById%28%22contentAreaContextMenu%22%29%3B%0Avar%20menuitem%20%3D%20document.createElement%28%22menuitem%22%29%3B%20%20%20%20%20%20%0Amenuitem.setAttribute%28%22label%22%2C%20%22%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u043F%u0440%u043E%u043A%u0441%u0438%22%29%3B%20%0Amenuitem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%0Amenuitem.setAttribute%28%22image%22%2C%20self.image%29%3B%0Amenuitem.onclick%20%3D%28%29%3D%3E%20addNewProxy%28menuitem%29%3B%0AcontextMenu.appendChild%28menuitem%29%3B%20//%20%u043A%u0430%u043A%20%u043F%u043E%u0441%u043B%u0435%u0434%u043D%u0438%u0439%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E%0AaddDestructor%28%28%29%3D%3E%20menuitem.remove%28%29%29%3B%0AaddEventListener%28%22popupshowing%22%2C%20%28%29%3D%3E%20%7B%0A%20%20%20menuitem.hidden%20%3D%20%21cbu.getPrefs%28%22CB.Proxy.inContextMenu%22%29%20%7C%7C%20%21gContextMenu.isContentSelected%3B%20//%20%21gContextMenu.isTextSelected%3B%0A%7D%2C%20false%2C%20contextMenu%29%3B%0A%20%20%0A%20%20%0A//%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%20...................%0Afunction%20addNewProxy%28menuitem%29%20%7B%20//alert%28menuitem.parentNode.id%29%0A%20%20%20var%20sel%20%3D%20gBrowser.contentDocument%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20gBrowser.contentDocument.defaultView.getSelection%28%29.toString%28%29%20//%20Pale%20Moon%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20gContextMenuContentData.selectionInfo.fullText%3B%20//%20Firefox%0A%20%20%20%0A%20%20%20sel%20%3D%20sel.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%20%22%22%29%3B%20//%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%2C%20%u0441%u043B%u0435%u0432%u0430%20%u0438%20%u0441%u043F%u0440%u0430%u0432%u0430%20%u043E%u0442%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%20%20%20sel%20%3D%20sel.replace%28/%5Cs+/g%2C%22%3A%22%29%3B%20%20%20%20%20%20%20//%20%u0437%u0430%u043C%u0435%u043D%u0438%u0442%u044C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%20%u0432%u043D%u0443%u0442%u0440%u0438%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%0A%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u043F%u043E%u0440%u0442%20...%0A%20%20%20if%20%28%20sel.length%20%3C%206%20%26%26%20isFinite%28sel%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u043F%u043E%u0440%u0442%27%3B%0A%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.http_port%22%2C%20+sel%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%0A%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u0430%u0434%u0440%u0435%u0441%20...%0A%20%20%20if%20%28%20sel.length%20%3E%205%20%26%26%20%21/%3A/.test%28sel%29%20%26%26%20sel.split%28%22.%22%29.length%20%3D%3D%204%20%29%20%7B%0A%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u0430%u0434%u0440%u0435%u0441%27%3B%0A%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.http%22%2C%20convertFromUnicode%28%22UTF-8%22%2C%20sel%29%29%3B%20%20%0A%20%20%20%20%20%20%20%20%7D%20%20%20%0A%20%20%20%20%20%0A%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0430%u0434%u0440%u0435%u0441%20%u0438%20%u043F%u043E%u0440%u0442%20...%20%20%20%20%0A%20%20%20if%20%28%20sel.length%20%3E%205%20%26%26%20/%3A/.test%28sel%29%20%26%26%20sel.split%28%22%3A%22%29.length%20%3D%3D%202%20%26%26%20sel.split%28%22.%22%29.length%20%3D%3D%204%20%29%20%7B%0A%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u0430%u0434%u0440%u0435%u0441%20%u0438%20%u043F%u043E%u0440%u0442%27%3B%0A%20%20%20%20%20%20%20%20var%20arr%20%3D%20sel.split%28%22%3A%22%29%2C%20IP%20%3D%20arr%5B0%5D%2C%20port%20%3D%20arr%5B1%5D%3B%0A%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.http_port%22%2C%20+port%29%3B%0A%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.http%22%2C%20convertFromUnicode%28%22UTF-8%22%2C%20IP%29%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%0A%0A%20%20%20//%20%u0432%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0440%u044F%u0434%u043E%u043C%20%u0441%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u043C%20%u0442%u0435%u043A%u0441%u0442%u043E%u043C%20...%20%20%20%20%20%0A%20%20%20var%20tooltip%20%3D%20self.appendChild%28document.createElement%28%22tooltip%22%29%29%3B%0A%20%20%20tooltip.style.cssText%20%3D%20%22color%3A%20red%20%21important%3B%20font-weight%3A%20bold%20%21important%3B%20font-size%3A%2014px%20%21important%3B%20-moz-box-orient%3A%20horizontal%3B%20text-align%3A%20center%3B%22%3B%0A%20%20%20%0A%20%20%20var%20image%20%3D%20tooltip.appendChild%28document.createElement%28%22image%22%29%29%3B%0A%20%20%20image.setAttribute%28%22src%22%2C%20self.image%29%3B%0A%20%20%20%20%20%20%0A%20%20%20var%20label%20%3D%20tooltip.appendChild%28document.createElement%28%22label%22%29%29%3B%0A%20%20%20label.setAttribute%28%22value%22%2C%20%22%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0435%u043D%20%22%20+%20lab%20+%20%22%20%u043F%u0440%u043E%u043A%u0441%u0438%3A%20%22%20+%20sel%29%3B%0A%0A%20%20%20tooltip.openPopup%28menuitem.parentNode%2C%20%22before_start%22%29%3B%0A%20%20%20setTimeout%28%28%29%3D%3E%20self.removeChild%28tooltip%29%2C%203000%29%3B%0A%7D%3B%0A%0A%20%20%0A//%20%u041A%u043E%u043D%u0432%u0435%u0440%u0442%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u044E%u043D%u0438%u043A%u043E%u0434%20.............%20%20%0Afunction%20convertFromUnicode%28charset%2C%20str%29%20%7B%0A%20%20%20var%20converter%20%3D%20Cc%5B%22@mozilla.org/intl/scriptableunicodeconverter%22%5D.createInstance%28Ci.nsIScriptableUnicodeConverter%29%3B%0A%20%20%20converter.charset%20%3D%20charset%3B%0A%20%20%20str%20%3D%20converter.ConvertFromUnicode%28str%29%3B%0A%20%20%20return%20str%20+%20converter.Finish%28%29%3B%0A%7D%3B%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
bunda1 пишет

Он удаляется из папки extensions при старте браузера, может там где то нужно отключить защиту?

У меня не удаляется, проверил на чистом профиле. Единственно что сделал xpinstall.signatures.required - false, ну и естественно архив распаковать.

voqabuhe пишет

В [nightly] этот пункт исчез.

Исправил: Proxy

23-12-2015 18:25:17

villa7 пишет

bunda1
Конфликтует с Toggle Find. Если Toggle Find включена, то прокси не прописывается.

У меня прописывается или я что то не понял. Может объясни подробней в чём проблема.

bunda1 пишет

Исправил: Proxy

Спасибо.

bunda1
Выделяю адрес прокси, щелкаю по Добавить прокси, выскакивает сообщение - Установлен порт прокси:0, при отключенном Toggle Find, всё нормально вставляет.

bunda1
А можешь добавить возможность включать "URL автоматической настройки сервиса прокси", не заходя в настройки?

voqabuhe пишет

bunda1
А можешь добавить возможность включать "URL автоматической настройки сервиса прокси", не заходя в настройки?

Могу, а как тебе нужно если не заходя в настройки?

bunda1 пишет

Могу, а как тебе нужно если не заходя в настройки?

Ну например СКМ по кнопке, просто вкл/выкл.

voqabuhe
Я уже просил и мне сделали.

Выделить код

Код:

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%3EProxy%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAAYOQAAWJ2kADh1fAAAEKAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAEEJBE4ULQ+fZ38ea/H/muhuv8gW3ztAxclewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLNlO7PH+n/3Sgu/281eP9zuHr/mWZuP4XXon/ABAeZwAAAAAAAAAAAQEBAQAAAAAZGBoTKScsLyYkKjErJSgnIC8/XgZQgP9BcZb8b5q3/oiux/+qx9r/a5Ow+zFtlv8PRWrGAAACAAEBAQMHBwcbAAAAD2BeYn769/3/4eDm/Onh5v+DnrX/A0t9/j1vlv+FqMH/lrfN/7rS4f9+pL3+M26X/xJYhu0DEiMdAAAAAAEBAQEAAAABBgUGEaSiprbPzNP239fb/4OcsP4aXYr/RHOZ/5Gwx//T5e//mrjO/3KYtv40apP/D0x77AUTIhwhHyMmeXV7mXt4fqJ3dHmce3d+n6eirODMx8r/o6q3/kN4nf92m7n/vtPj/9Hg7P/C1OL/eJq1+jtulv8bSnC7AAEGAF1aYH7//////f39/P//////////////////////////lbHC/3ilvf/K4Oz/2OXv/7nN3f6FqcP/VIiv/AseMT8AAAAAXFtef+LY5/+AT534fU2d+4VXovyKXaf+jGGp/5BlrP+GWKT/ZmGc/4Cduf+ivtD+k7HH/1t/neUTJjhFAAAAAAEBAQJfXmB/3tHl/14giPxcIYr/Zy+S/244mP9yPZv/cj6c/3M9nP9wNpf/YDSP/1k0ivu7tdP/YmNmiAAAAAAEBAQGAAAAAF9eYIDg1Ob/cDqV/HE9mv9/TaT/hler/4tdr/+NXrD/iFms/4JTqP9+SqP/cjqW+9zJ4/9ubW6JAAAAAAMDBAQAAAAAX15ggODU5v94RZz8e0mi/4pcrv+Vabf/nXO9/6J5wf+jfMH/oXq//513u/+NY6z718bh/2pqa4gAAAAABAMEBAAAAABfXWCA4NTm/4VWpfyPY7L/onvA/7GPzP+8ndT/waTY/8Cj1/+6nNL/tZfO/6F9uvvYx+L/ampriAAAAAAEAwQEAAAAAF9eYH/e0uX/n3u5/LKTzP/Bpdf/zrbh/9jC6f/bxuv/2cTp/9O+5P/Qu+H/uJ3L+9jI4f9qaWuHAAAAAAQDBAQAAAAAX15gf97S5P+gfbf5sZPH/LqdzfzCqNT8ybHZ/My12vzKs9n8xq/W/Mav1fywksL418fh/2tqbIkAAAAABAMEBAAAAABZVlt3+fX8/+DU5vzj1un/5tvt/+ne7//r4PH/6t7w/+fb7f/k2Ov/4dPn/9nM4Pv79v//ZGFnfwAAAAADAwQEAAAAABcVGRpZVlt6YF9hgWBgYoBhYWKAYmFigGJiY4BiYmOAYmFigGFhYoBgYGGAX15ggF1aX4AbGR0eAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20Proxy%2C%20%u043E%u0442%2023.12.2015.%0A%0A%0A//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.onmousedown%20%3De%3D%3E%20%7B%0A%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u0434%u043B%u0438%u043D%u043D%u044B%u0439%20%u043B%u0435%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%0A%20%20%20%20%20%20%20%20self.timer%20%3D%20setTimeout%28%28%29%3D%3E%7B%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20self.onmouseup%20%3D%20%27%27%3B%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20cbu.getPrefs%28%22CB.Proxy.connectionsInTab%22%29%20%3F%20openConnectionsInTab%28%29%20%3A%20openConnections%28%29%3B%0A%20%20%20%20%20%20%20%20%7D%2C%20500%29%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20this.onmouseup%20%3De%3D%3E%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u043B%u0435%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%0A%20%20%20%20%20%20%20%20if%20%28%20e.button%20%29%20return%3B%0A%20%20%20%20%20%20%20%20clearTimeout%28self.timer%29%3B%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.type%22%2C%20cbu.getPrefs%28%22network.proxy.type%22%29%20%3F%200%20%3A%202%29%3B%0A%20%20%20%7D%0A%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%20%29%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u043F%u0440%u0430%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%0A%20%20%20%20%20%20%20%20menuPopup.showPopup%28self%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%7D%3B%0Aself.onclick%20%3De%3D%3E%20e.preventDefault%28%29%3B%0A%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.onmouseover%20%3D%28%29%3D%3E%20%7B%0A%20%20%20this.tooltipText%20%3D%20%22Proxy%20%5Cn%u041B%3A%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u043F%u0440%u043E%u043A%u0441%u0438%20%5Cn%u0414%u041B%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%u041F%3A%20M%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%20%5Cn%5Cn%u0422%u0435%u043A%u0443%u0449%u0438%u0435%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%3A%20%22%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5CnIP%3A%20%22%20+%20Application.prefs.getValue%28%22network.proxy.http%22%2C%200%29%20+%20%22%5Cn%u041F%u043E%u0440%u0442%3A%20%22+%20cbu.getPrefs%28%22network.proxy.http_port%22%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%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%7D%3B%0A%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Avar%20array%20%3D%20%5B%0A%20%20%20%7B%20label%3A%20%22%u0414%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043E%u043C%20%u043C%u0435%u043D%u044E%22%2C%20value%3A%20%27CB.Proxy.inContextMenu%27%20%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u041E%u0442%u043A%u0440%u044B%u0432%u0430%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u043A%u0430%u043A%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%22%2C%20value%3A%20%27CB.Proxy.connectionsInTab%27%20%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u043D%u0430%20%u0440%u0435%u0436%u0438%u043C%20%27%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%27%20%u043F%u0440%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0438%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%22%2C%20value%3A%20%27CB.Proxy.reset%27%20%7D%20%20%20%20%0A%5D%3B%0A%0Avar%20menuPopup%20%3D%20document.getElementById%28%27mainPopupSet%27%29.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0Aarray.forEach%28%28m%29%3D%3E%20%7B%0A%20%20%20var%20mItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20mItem.setAttribute%28%22label%22%2C%20m.label%29%3B%0A%20%20%20mItem.setAttribute%28%27type%27%2C%20%27checkbox%27%29%3B%0A%20%20%20mItem.setAttribute%28%27checked%27%2C%20cbu.getPrefs%28m.value%29%20%29%3B%0A%20%20%20mItem.onclick%20%3D%28%29%3D%3E%20cbu.setPrefs%28m.value%2C%20%21cbu.getPrefs%28m.value%29%29%3B%20%20%0A%20%20%20menuPopup.appendChild%28mItem%29%3B%0A%7D%29%3B%0AaddDestructor%28%28%29%3D%3E%20menuPopup.remove%28%29%20%29%3B%0A%0A//%20%u0434%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0441%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u043E%u0435%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%0AmenuPopup.appendChild%28document.createElement%28%22menuseparator%22%29%29%3B%0AmenuPopup.appendChild%28document.createElement%28%22menu%22%29%29.setAttribute%28%22label%22%2C%20%22%u041C%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%22%29%3B%0Avar%20clone%20%3D%20menuPopup.lastChild.appendChild%28document.getElementById%28%22custombuttons-contextpopup%22%29.cloneNode%28true%29%29%3B%0Aclone.setAttribute%28%22onpopupshowing%22%2C%20%22document.popupNode%20%3D%20document.getElementById%28%27%22%20+%20_id%20+%20%22%27%29%22%29%3B%0A%0A%0A%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043E%u043A%u043D%u0435%20................................%0Afunction%20openConnections%28%29%20%7B%0A%20%20%20for%20%28%20var%20win%2C%20nm%20%3D%20Services.wm.getEnumerator%28null%29%3B%20win%20%3D%20nm.getNext%28%29%3B%20%29%20%0A%20%20%20%20%20%20%20%20%20if%20%28%20win.name%20%3D%3D%20%27Proxy%27%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.focus%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20var%20win%20%3D%20openDialog%28%22chrome%3A//browser/content/preferences/connection.xul%22%2C%20%22Proxy%22%2C%20%22centerscreen%22%29%3B%0A%0A%20%20%20//%20%u0434%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%20%22prefwindow%22%0A%20%20%20win.addEventListener%28%22load%22%2C%20function%20f%28e%29%20%7B%0A%20%20%20%20%20%20%20this.removeEventListener%28%22load%22%2C%20f%2C%20true%29%3B%20%0A%20%20%20%20%20%20%20e.target.documentElement.setAttribute%28%22type%22%2C%20%22prefwindow%22%29%3B%0A%20%20%20%7D%2C%20true%20%29%3B%0A%20%20%20%0A%20%20%20//%20%u0437%u0430%u043A%u0440%u044B%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u043F%u043E%20%u043A%u043B%u0438%u043A%u0443%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%0A%20%20%20gBrowser.addEventListener%28%22click%22%2C%20function%20c%28%29%20%7B%0A%20%20%20%20%20%20this.removeEventListener%28%22click%22%2C%20c%20%29%3B%0A%20%20%20%20%20%20try%20%7B%20win.close%28%29%20%7D%20catch%28e%29%20%7B%7D%3B%20%0A%20%20%20%7D%2C%20true%20%29%3B%0A%7D%3B%0A%0A%0A%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20................................%0Afunction%20openConnectionsInTab%28%29%20%7B%20%0A%20%20%20var%20connections%20%3D%20gBrowser.getBrowserForTab%28%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28%22chrome%3A//browser/content/preferences/connection.xul%22%29%20%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20//%20o%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%20%u0436%u0434%u0435%u0442%20%u043F%u043E%u043A%u0430%20%u043E%u0442%u043A%u0440%u043E%u0435%u0442%u0441%u044F%20%u043F%u0440%u043E%u043A%u0441%u0438%2C%20%u0443%u0434%u0430%u043B%u044F%u0435%u0442%20%u0441%u0435%u0431%u044F%20%u0438%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%0A%20%20%20connections.addEventListener%28%22pageshow%22%2C%20function%20c%28e%29%20%7B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20this.removeEventListener%28e.type%2C%20c%29%3B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20e.originalTarget.documentElement.setAttribute%28%22type%22%2C%20%22prefwindow%22%29%3B%0A%20%20%20%7D%29%20%20%20%0A%7D%3B%0A%0A%0A%0A//%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0438%u0432%u0430%u0442%u044C%20%u043D%u0443%u0436%u043D%u0443%u044E%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u0440%u0438%20%u0441%u0442%u0430%u0440%u0442%u0435%20%u0431%u0430%u0443%u0437%u0435%u0440%u0430%20%u0438%u043B%u0438%20%u043F%u0440%u0438%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%u0445%20%u0432%20%27about%3Aconfig%27%20................................%0Avar%20%20s%20%3D%20%22network.proxy.type%22%3B%0Afunction%20toggleImage%28%29%20%7B%0A%20%20%20var%20icon%20%3D%20self.ownerDocument.getAnonymousElementByAttribute%28%20self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0A%20%20%20icon.src%20%3D%20%21cbu.getPrefs%28s%29%0A%20%20%20%3F%20self.image%0A%20%20%20%3A%20%27data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAA4GQAAnFmkAHQ5fAAQAKAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAQBJBFQOLQ+nX38ecev/mu6of8gfFvtAyUXewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLUza7PKd//3S7oP2849X9zuvh/mW4mf4XiV7/AB4QZwAAAAAAAAAAAQEBAQAAAAAZGhgTKSwnLyYqJDErKCUnID8vXgaAUP9BlnH8b7ea/ojHrv+q2sf/a7CT+zGWbf8PakXGAAIAAAEBAQMHBwcbAAAAD2BiXn76/ff/4ebg/Onm4f+DtZ7/A31L/j2Wb/+Fwaj/ls23/7rh0v9+vaT+M5du/xKGWO0DIxIdAAAAAAEBAQEAAAABBgYFEaSmorbP08z239vX/4OwnP4ail3/RJlz/5HHsP/T7+X/ms64/3K2mP40k2r/D3tM7AUiExwhIx8meXt1mXt+eKJ3eXSce353n6esouDMysf/o7eq/kOdeP92uZv/vuPT/9Hs4P/C4tT/eLWa+juWbv8bcEq7AAYBAF1gWn7//////f39/P//////////////////////////lcKx/3i9pf/K7OD/2O/l/7ndzf6Fw6n/VK+I/AsxHj8AAAAAXF5bf+Ln2P+AnU/4fZ1N+4WiV/yKp13+jKlh/5CsZf+GpFj/Zpxh/4C5nf+i0L7+k8ex/1udf+UTOCZFAAAAAAEBAQJfYF5/3uXR/16IIPxciiH/Z5Iv/26YOP9ymz3/cpw+/3OcPf9wlzb/YI80/1mKNPu707X/YmZjiAAAAAAEBAQGAAAAAF9gXoDg5tT/cJU6/HGaPf9/pE3/hqtX/4uvXf+NsF7/iKxZ/4KoU/9+o0r/cpY6+9zjyf9ubm2JAAAAAAMEAwQAAAAAX2BegODm1P94nEX8e6JJ/4quXP+Vt2n/nb1z/6LBef+jwXz/ob96/527d/+NrGP71+HG/2praogAAAAABAQDBAAAAABfYF2A4ObU/4WlVvyPsmP/osB7/7HMj/+81J3/wdik/8DXo/+60pz/tc6X/6G6ffvY4sf/amtqiAAAAAAEBAMEAAAAAF9gXn/e5dL/n7l7/LLMk//B16X/zuG2/9jpwv/b68b/2enE/9Pkvv/Q4bv/uMud+9jhyP9qa2mHAAAAAAQEAwQAAAAAX2Bef97k0v+gt335sceT/LrNnfzC1Kj8ydmx/MzatfzK2bP8xtav/MbVr/ywwpL41+HH/2tsaokAAAAABAQDBAAAAABZW1Z3+fz1/+Dm1Pzj6db/5u3b/+nv3v/r8eD/6vDe/+ft2//k69j/4efT/9ngzPv7//b/ZGdhfwAAAAADBAMEAAAAABcZFRpZW1Z6YGFfgWBiYIBhYmGAYmJhgGJjYoBiY2KAYmJhgGFiYYBgYWCAX2BegF1fWoAbHRkeAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%27%3B%0A%7D%3B%20%20%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28%28%29%3D%3E%20gPrefService.removeObserver%28s%2C%20toggleImage%29%20%29%3B%0A%0A%0A%0A//%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u043D%u0430%20%u0440%u0435%u0436%u0438%u043C%20%27%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%27%20%u043F%u0440%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0438%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20................................%0Avar%20switchOffProxy%20%3D%20%7B%0A%20%20%20%20observe%3A%20function%28subject%2C%20topic%2C%20data%29%20%7B%0A%20%20%20%20%20%20%20if%20%28%20data%20%3D%3D%20%22shutdown%22%20%26%26%20cbu.getPrefs%28%22CB.Proxy.reset%22%29%20%29%20cbu.setPrefs%28%22network.proxy.type%22%2C%200%29%3B%20%20%0A%20%20%20%20%7D%0A%7D%3B%0AServices.obs.addObserver%28switchOffProxy%2C%20%22quit-application%22%2C%20false%29%3B%0A%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0435%u043C%20%u043C%u0435%u043D%u044E%20%u0434%u043B%u044F%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u043C%20%u043C%u0435%u043D%u044E%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20................................%0A%28%28contextMenu%29%3D%3E%20%7B%0A%0A%20%20//%20%u0441%u043E%u0437%u0434%u0430%u0442%u044C%20%u043D%u043E%u0432%u044B%u0439%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E%0A%20%20var%20menuitem%20%3D%20document.createElement%28%22menuitem%22%29%3B%20%20%20%20%20%20%0A%20%20menuitem.setAttribute%28%22label%22%2C%20%22%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u043F%u0440%u043E%u043A%u0441%u0438%22%29%3B%20%0A%20%20menuitem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%0A%20%20menuitem.setAttribute%28%22image%22%2C%20self.image%29%3B%0A%20%20menuitem.onclick%20%3D%28%29%3D%3E%20addNewProxy%28%29%3B%0A%20%20contextMenu.appendChild%28menuitem%29%3B%20//%20%u043A%u0430%u043A%20%u043F%u043E%u0441%u043B%u0435%u0434%u043D%u0438%u0439%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E%0A%20%20addDestructor%28%28%29%3D%3E%20menuitem.remove%28%29%20%29%3B%0A%20%20%0A%20%20//%20%u0443%u0441%u0442%u0430%u043D%u0430%u0432%u043B%u0438%u0432%u0430%u0435%u043C%20%u0433%u0434%u0435%20%u043F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E%20%0A%20%20addEventListener%28%22popupshowing%22%2C%20%28%29%3D%3E%7B%0A%20%20%20%20%20menuitem.hidden%20%3D%20%21cbu.getPrefs%28%22CB.Proxy.inContextMenu%22%29%20%7C%7C%20%21gContextMenu.isContentSelected%3B%20//%20%21gContextMenu.isTextSelected%3B%0A%20%20%7D%2C%20false%2C%20contextMenu%29%3B%0A%20%20%0A%20%20%0A%20%20//%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%0A%20%20function%20addNewProxy%28sel%29%20%7B%20%20%0A%20%20%20%20%20var%20selection%20%3D%20document.commandDispatcher.focusedWindow.getSelection%28%29.toString%28%29%3B%0A%20%20%20%20%20var%20sel%20%3D%20%28%20sel%20%3D%3D%20undefined%20%29%20%3F%20selection%20%3A%20sel.toString%28%29%3B%0A%20%20%20%20%20sel%20%3D%20sel.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%20%22%22%29%3B%20//%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%2C%20%u0441%u043B%u0435%u0432%u0430%20%u0438%20%u0441%u043F%u0440%u0430%u0432%u0430%20%u043E%u0442%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%20%20%20%20%20sel%20%3D%20sel.replace%28/%5Cs+/g%2C%22%3A%22%29%3B%20//%20%u0437%u0430%u043C%u0435%u043D%u0438%u0442%u044C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%20%u0432%u043D%u0443%u0442%u0440%u0438%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%0A%20%20%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u043F%u043E%u0440%u0442%20...%0A%20%20%20%20%20if%20%28%20sel.length%20%3C%206%20%26%26%20isFinite%28sel%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20sel%20%3D%20sel.replace%28/%3A/g%2C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u043F%u043E%u0440%u0442%27%3B%0A%20%20%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.http_port%22%2C%20+sel%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u0430%u0434%u0440%u0435%u0441%20...%0A%20%20%20%20%20if%20%28%20sel.length%20%3E%205%20%26%26%20%21/%3A/.test%28sel%29%20%26%26%20sel.split%28%22.%22%29.length%20%3D%3D%204%20%29%20%7B%20%20%20%0A%20%20%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u0430%u0434%u0440%u0435%u0441%27%3B%0A%20%20%20%20%20%20%20%20%20%20Application.prefs.setValue%28%22network.proxy.http%22%2C%20sel%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0430%u0434%u0440%u0435%u0441%20%u0438%20%u043F%u043E%u0440%u0442%20...%20%20%20%20%0A%20%20%20%20%20if%20%28%20sel.length%20%3E%205%20%26%26%20/%3A/.test%28sel%29%20%26%26%20sel.split%28%22%3A%22%29.length%20%3D%3D%202%20%26%26%20sel.split%28%22.%22%29.length%20%3D%3D%204%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u0430%u0434%u0440%u0435%u0441%20%u0438%20%u043F%u043E%u0440%u0442%27%3B%0A%20%20%20%20%20%20%20%20%20%20var%20array%20%3D%20sel.split%28%22%3A%22%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20array.forEach%28%28str%29%3D%3E%20addNewProxy%28str%29%20%29%3B%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%0A%0A%20%20%20%20%20if%20%28%20lab%20%3D%3D%20undefined%20%29%20return%3B%0A%0A%20%20%20%20%20//%20%u0432%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0440%u044F%u0434%u043E%u043C%20%u0441%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u043C%20%u0442%u0435%u043A%u0441%u0442%u043E%u043C%20...%20%20%20%20%20%0A%20%20%20%20%20function%20showTooltip%28%29%20%7B%0A%20%20%20%20%20%20%20%20var%20tooltip%20%3D%20gBrowser.appendChild%28%20document.createElement%28%22tooltip%22%29%20%29%3B%0A%20%20%20%20%20%20%20%20tooltip.style.cssText%20%3D%20%22color%3A%20red%20%21important%3B%20font-weight%3A%20bold%20%21important%3B%20font-size%3A%2014px%20%21important%3B%20-moz-box-orient%3A%20horizontal%3B%20text-align%3A%20center%3B%22%3B%0A%20%20%20%0A%20%20%20%20%20%20%20%20var%20image%20%3D%20tooltip.appendChild%28%20document.createElement%28%22image%22%29%20%29%3B%0A%20%20%20%20%20%20%20%20image.setAttribute%28%22src%22%2C%20self.image%29%3B%0A%20%20%20%0A%20%20%20%20%20%20%20%20var%20label%20%3D%20tooltip.appendChild%28%20document.createElement%28%22label%22%29%29%3B%0A%20%20%20%20%20%20%20%20label.setAttribute%28%22value%22%2C%20%22%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0435%u043D%20%22%20+%20lab%20+%20%22%20%u043F%u0440%u043E%u043A%u0441%u0438%3A%20%22%20+%20sel%29%3B%0A%20%20%20%20%0A%20%20%20%20%20%20%20%20var%20focused%20%3D%20document.commandDispatcher.focusedWindow%3B%0A%20%20%20%20%20%20%20%20var%20selection%20%3D%20focused.getSelection%28%29.getRangeAt%280%29.getBoundingClientRect%28%29%3B%0A%20%20%20%20%20%20%20%20var%20posX%20%3D%20focused.mozInnerScreenX%20+%20selection.left%3B%0A%20%20%20%20%20%20%20%20var%20posY%20%3D%20focused.mozInnerScreenY%20+%20selection.bottom%20-%205%3B%20%20%20%0A%0A%20%20%20%20%20%20%20%20tooltip.showPopup%28gBrowser%2C%20posX%2C%20posY%29%3B%0A%20%20%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20gBrowser.removeChild%28tooltip%29%2C%203000%29%3B%0A%20%20%20%20%20%7D%3B%0A%20%20%20%20%20showTooltip%28%29%3B%20%20%20%20%0A%20%20%7D%3B%0A%20%20%20%0A%7D%29%28document.getElementById%28%22contentAreaContextMenu%22%29%29%3B%20%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

Левой кнопкой переключение, левой длинный клик - настройки.

Mishania пишет

Левой кнопкой переключение, левой длинный клик - настройки.

Ну и где там, что я прошу, переключение "URL автоматической настройки сервиса прокси" ?

voqabuhe
В этой кнопке по клику ЛКМ включается - http://take.ms/UuHXO
Ещё одно нажатие отключает прокси. Вы либо не попробовали, либо очень плохо умеете формулировать что вам надо. Давайте попробуем подкрепить просьбу картинкой.

Похоже, что нужно, чтобы и так, и так можно было переключать:

Выделить код

Код:

// по умолчанию кнопка переключает на то, что забито в ручные настройки (например, у меня на AdvOR)
cbu.setPrefs("network.proxy.type", cbu.getPrefs("network.proxy.type") ? 0 : 1);
// а нужна дополнительная возможность такого переключения:
cbu.setPrefs("network.proxy.type", cbu.getPrefs("network.proxy.type") ? 0 : 2);

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

Mishania пишет

Вы либо не попробовали, либо очень плохо умеете формулировать что вам надо. Давайте попробуем подкрепить просьбу картинкой.

Ага не пробовал, но всё равно не совсем то. :) И прежде чем учить формулировать, лучше сам внимательней читай. Я же изначально писал "добавить возможность...", а не заменить... :dumb:

adidharma пишет

Похоже, что нужно, чтобы и так, и так можно было переключать

Ага

adidharma пишет

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

Во-во :)

voqabuhe
Ну а если переключать настройки прокси по кругу левым кликом + изменения иконки красная, зелёная, синяя.

bunda1 пишет

Ну а если переключать настройки прокси по кругу левым кликом + изменения иконки красная, зелёная, синяя.

Да отлично будет, мне главное переключать, не заходя в настройки.

24-02-2016 16:14:10
ПС Только почему синяя? В светофоре всегда жёлтая.:)

voqabuhe пишет

ПС Только почему синяя? В светофоре всегда жёлтая.:)

Выделить код

Код:

// Proxy, от 24.02.2016.


// Настройка функций кликов мыши для кнопки ...................
this.onmousedown =e=> {
   
   this.onmouseup =e=>{                  // левый клик
        if ( e.button ) return;
        clearTimeout(self.timer);           

        switch( cbu.getPrefs("network.proxy.type") ) {
           case 0:  var data = 1; break;            
           case 1:  var data = 2; break; 
           case 2:  var data = 0; break;
           default: var data = 0; 
        }
        cbu.setPrefs("network.proxy.type", data);  
   }

   if ( e.button == 0 )                  // длинный левый клик
        self.timer = setTimeout(()=>{     
           self.onmouseup = '';
           cbu.getPrefs("CB.Proxy.connectionsInTab") ? openConnectionsInTab() : openConnections();
        }, 500);
   
   if ( e.button == 2 )                  // правый клик
        menuPopup.showPopup(self, -1, -1, "popup", "bottomleft", "topleft");
};
self.onclick =e=> e.preventDefault();



// Подсказка для кнопки ...................
this.onmouseover =()=> {
   this.tooltipText = "Proxy \nЛ: Переключить прокси \nДЛ: Открыть настройки прокси"
                    + "\nП: Mеню кнопки \n\nТекущие настройки прокси: " 
                    + "\nIP: " + Application.prefs.getValue("network.proxy.http", 0) + "\nПорт: "+ cbu.getPrefs("network.proxy.http_port");                                                    
};



// Создать меню для кнопки ...................
var array = [
   { label: "Добавление прокси в контекстом меню", value: 'CB.Proxy.inContextMenu' },
   { label: "Открывать настройки прокси как вкладку", value: 'CB.Proxy.connectionsInTab' },
   { label: "Переключать на режим 'Без прокси' при закрытии браузера ", value: 'CB.Proxy.reset' }    
];

var menuPopup = document.getElementById('mainPopupSet').appendChild(document.createElement("menupopup"));
array.forEach((m)=> {
   var mItem = document.createElement("menuitem");
   mItem.setAttribute("label", m.label);
   mItem.setAttribute('type', 'checkbox');
   mItem.setAttribute('checked', cbu.getPrefs(m.value) );
   mItem.onclick =()=> cbu.setPrefs(m.value, !cbu.getPrefs(m.value));  
   menuPopup.appendChild(mItem);
});
addDestructor(()=> menuPopup.remove() );

// добавить стандартное контекстное меню 
menuPopup.appendChild(document.createElement("menuseparator"));
menuPopup.appendChild(document.createElement("menu")).setAttribute("label", "Меню кнопки");
var clone = menuPopup.lastChild.appendChild(document.getElementById("custombuttons-contextpopup").cloneNode(true));
clone.setAttribute("onpopupshowing", "document.popupNode = document.getElementById('" + _id + "')");



// Функция открывает настройки прокси в окне ...................
function openConnections() {
   for ( var win, nm = Services.wm.getEnumerator(null); win = nm.getNext(); ) 
         if ( win.name == 'Proxy') {
              win.focus();  
              break;
              }
   var win = openDialog("chrome://browser/content/preferences/connection.xul", "Proxy", "centerscreen");

   // добавить атрибут "prefwindow"
   win.addEventListener("load", function f(e) {
       this.removeEventListener("load", f, true); 
       e.target.documentElement.setAttribute("type", "prefwindow");
   }, true );
   
   // закрыть настройки прокси по клику на странице 
   gBrowser.addEventListener("click", function c() {
      this.removeEventListener("click", c );
      try { win.close() } catch(e) {}; 
   }, true );
};



// Функция открывает настройки прокси в вкладке ...................
function openConnectionsInTab() { 
   var connections = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("chrome://browser/content/preferences/connection.xul") ); 
          
   // oбработчик ждет пока откроется прокси, удаляет себя и добавляет атрибут
   connections.addEventListener("pageshow", function c(e) {         
      this.removeEventListener(e.type, c);         
      e.originalTarget.documentElement.setAttribute("type", "prefwindow");
   })   
};



// Установливать нужную иконку кнопки при старте баузера или при изменениях в 'about:config' ...................
var s = "network.proxy.type";
function toggleImage() {
   var icon = self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon");
   switch( cbu.getPrefs(s) ) {
      case 0: icon.src = self.image; break;          
      case 1: icon.src = 'data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAA4GQAAnFmkAHQ5fAAQAKAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAQBJBFQOLQ+nX38ecev/mu6of8gfFvtAyUXewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLUza7PKd//3S7oP2849X9zuvh/mW4mf4XiV7/AB4QZwAAAAAAAAAAAQEBAQAAAAAZGhgTKSwnLyYqJDErKCUnID8vXgaAUP9BlnH8b7ea/ojHrv+q2sf/a7CT+zGWbf8PakXGAAIAAAEBAQMHBwcbAAAAD2BiXn76/ff/4ebg/Onm4f+DtZ7/A31L/j2Wb/+Fwaj/ls23/7rh0v9+vaT+M5du/xKGWO0DIxIdAAAAAAEBAQEAAAABBgYFEaSmorbP08z239vX/4OwnP4ail3/RJlz/5HHsP/T7+X/ms64/3K2mP40k2r/D3tM7AUiExwhIx8meXt1mXt+eKJ3eXSce353n6esouDMysf/o7eq/kOdeP92uZv/vuPT/9Hs4P/C4tT/eLWa+juWbv8bcEq7AAYBAF1gWn7//////f39/P//////////////////////////lcKx/3i9pf/K7OD/2O/l/7ndzf6Fw6n/VK+I/AsxHj8AAAAAXF5bf+Ln2P+AnU/4fZ1N+4WiV/yKp13+jKlh/5CsZf+GpFj/Zpxh/4C5nf+i0L7+k8ex/1udf+UTOCZFAAAAAAEBAQJfYF5/3uXR/16IIPxciiH/Z5Iv/26YOP9ymz3/cpw+/3OcPf9wlzb/YI80/1mKNPu707X/YmZjiAAAAAAEBAQGAAAAAF9gXoDg5tT/cJU6/HGaPf9/pE3/hqtX/4uvXf+NsF7/iKxZ/4KoU/9+o0r/cpY6+9zjyf9ubm2JAAAAAAMEAwQAAAAAX2BegODm1P94nEX8e6JJ/4quXP+Vt2n/nb1z/6LBef+jwXz/ob96/527d/+NrGP71+HG/2praogAAAAABAQDBAAAAABfYF2A4ObU/4WlVvyPsmP/osB7/7HMj/+81J3/wdik/8DXo/+60pz/tc6X/6G6ffvY4sf/amtqiAAAAAAEBAMEAAAAAF9gXn/e5dL/n7l7/LLMk//B16X/zuG2/9jpwv/b68b/2enE/9Pkvv/Q4bv/uMud+9jhyP9qa2mHAAAAAAQEAwQAAAAAX2Bef97k0v+gt335sceT/LrNnfzC1Kj8ydmx/MzatfzK2bP8xtav/MbVr/ywwpL41+HH/2tsaokAAAAABAQDBAAAAABZW1Z3+fz1/+Dm1Pzj6db/5u3b/+nv3v/r8eD/6vDe/+ft2//k69j/4efT/9ngzPv7//b/ZGdhfwAAAAADBAMEAAAAABcZFRpZW1Z6YGFfgWBiYIBhYmGAYmJhgGJjYoBiY2KAYmJhgGFiYYBgYWCAX2BegF1fWoAbHRkeAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA='; break;
      case 2: icon.src = 'data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAAcHQAAYGGkAEBBfAAEBKAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABAQEAAgICAAICAgACAgMBAQEAAAEBJAA6OrQAf3/8ALCw/gCiov8AXl7tABkZewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMAOTm7AIOD/wCjo/0A1tb9AOHh/gCcnP4AY2P/ABISZwAAAAAAAAAAAAEBAQAAAAAAGBgTACgoLwAmJjEAJiYnADIyXgBWVv8Adnb8AJ2d/gCxsf8Aycn/AJeX+wBycv8ASkrGAAACAAABAQMABwcbAAAADwBfX34A+fn/AOHh/ADj4/8AoaH/AFJS/gB1df8Aq6v/ALm5/wDT0/8Ap6f+AHNz/wBeXu0AFRUdAAAAAAABAQEAAAABAAUFEQCjo7YAzs72ANnZ/wCfn/4AY2P/AHl5/wCzs/8A5ub/ALu7/wCcnP4AcHD/AFNT7AAVFRwAICAmAHd3mQB6eqIAdXWcAHl5nwClpeAAyMj/AK2t/gB9ff8An5//ANXV/wDh4f8A1tb/AJ6e+gB0dP8AUFC7AAEGAABcXH4A////AP39/AD///8A////AP///wD///8A////ALOz/wCnp/8A4eH/AObm/wDPz/4ArKz/AI2N/AAhIT8AAAAAAFxcfwDd3f8Aa2v4AGpq+wBycvwAeHj+AHt7/wB/f/8Ac3P/AHNz/wCiov8AwMD+ALS0/wCEhOUAKSlFAAAAAAABAQIAXl5/ANjY/wBGRvwARkb/AFJS/wBaWv8AX1//AF9f/wBfX/8AWVn/AFRU/wBRUfsAvr7/AGNjiAAAAAAABAQGAAAAAABeXoAA2tr/AFtb/ABeXv8AbGz/AHV1/wB6ev8Ae3v/AHd3/wBxcf8Aamr/AFtb+wDS0v8AbW2JAAAAAAADAwQAAAAAAF5egADa2v8AZGT8AGlp/wB5ef8AhYX/AI2N/wCTk/8AlJT/AJKS/wCPj/8AfX37AM/P/wBqaogAAAAAAAMDBAAAAAAAXl6AANra/wBycvwAf3//AJOT/wClpf8AsLD/ALa2/wC1tf8Ar6//AKqq/wCTk/sA0ND/AGpqiAAAAAAAAwMEAAAAAABeXn8A2dn/AJGR/ACnp/8At7f/AMXF/wDQ0P8A09P/ANHR/wDLy/8AyMj/AK2t+wDR0f8AaWmHAAAAAAADAwQAAAAAAF5efwDY2P8AkpL5AKWl/ACurvwAuLj8AL+//ADCwvwAwMD8AL29/AC8vPwAo6P4ANDQ/wBqaokAAAAAAAMDBAAAAAAAV1d3APf3/wDa2vwA3d3/AOHh/wDk5P8A5ub/AOTk/wDh4f8A39//ANra/wDT0/sA+fn/AGNjfwAAAAAAAwMEAAAAAAAWFhoAV1d6AF9fgQBgYIAAYWGAAGFhgABiYoAAYmKAAGFhgABhYYAAYGCAAF5egABbW4AAGhoeAAAAAAABAQEAAAAA/oOAQeEAgEH6AIBBoACAQQAAAEGAAABBAACAQQAAgEEAAQBBAAKAQQACgEEAAoBBAAKAQQACgEEAAoBBAAKAQQACgEE='; break;
      default:icon.src = self.image; 
   }
};  
toggleImage();
gPrefService.addObserver(s, toggleImage, false);
addDestructor(()=> gPrefService.removeObserver(s, toggleImage) );



// Переключать на режим 'Без прокси' при закрытии браузера если это разрешено в 'about:config' ...................
var switchOffProxy = {
    observe: function(subject, topic, data) {
       if ( data == "shutdown" && cbu.getPrefs("CB.Proxy.reset") ) cbu.setPrefs("network.proxy.type", 0);  
    }
};
Services.obs.addObserver(switchOffProxy, "quit-application", false);



// Создаем меню для добавление прокси в контекстном меню выделенного текста на странице ...................
((contextMenu)=> {

  // создать новый пункт меню
  var menuitem = contextMenu.appendChild( document.createElement("menuitem") );      
  menuitem.setAttribute("label", "Добавить прокси"); 
  menuitem.setAttribute("class", "menuitem-iconic");
  menuitem.setAttribute("image", self.image);
  menuitem.onclick =()=> addNewProxy();
  addDestructor(()=> menuitem.remove() );
  
  // устанавливаем где показывать пункт меню 
  addEventListener("popupshowing", ()=>{
     menuitem.hidden = !cbu.getPrefs("CB.Proxy.inContextMenu") || !gContextMenu.isContentSelected; // !gContextMenu.isTextSelected;
  }, false, contextMenu);
  
  
  // добавление прокси
  function addNewProxy(sel) {  
     var selection = document.commandDispatcher.focusedWindow.getSelection().toString();
     var sel = ( sel == undefined ) ? selection : sel.toString();
     sel = sel.replace(/^\s+|\s+$/g, ""); // удалить пробелы, слева и справа от строки
     sel = sel.replace(/\s+/g,":"); // заменить пробелы внутри строки

     // если только порт ...
     if ( sel.length < 6 && isFinite(sel) ) { 
          sel = sel.replace(/:/g, "");
          var lab = 'порт';
          cbu.setPrefs("network.proxy.http_port", +sel);                    
          }
     
     // если только адрес ...
     if ( sel.length > 5 && !/:/.test(sel) && sel.split(".").length == 4 ) {   
          var lab = 'адрес';
          Application.prefs.setValue("network.proxy.http", sel);  
          }   
     
     // если адрес и порт ...    
     if ( sel.length > 5 && /:/.test(sel) && sel.split(":").length == 2 && sel.split(".").length == 4 ) {
          var lab = 'адрес и порт';
          var array = sel.split(":");  
          array.forEach((str)=> addNewProxy(str) );          
          }     

     if ( lab == undefined ) return;

     // всплывающая подсказка рядом с выделенным текстом ...     
     function showTooltip() {
        var tooltip = gBrowser.appendChild( document.createElement("tooltip") );
        tooltip.style.cssText = "color: red !important; font-weight: bold !important; font-size: 14px !important; -moz-box-orient: horizontal; text-align: center;";
   
        var image = tooltip.appendChild( document.createElement("image") );
        image.setAttribute("src", self.image);
   
        var label = tooltip.appendChild( document.createElement("label"));
        label.setAttribute("value", "Установлен " + lab + " прокси: " + sel);
    
        var focused = document.commandDispatcher.focusedWindow;
        var selection = focused.getSelection().getRangeAt(0).getBoundingClientRect();
        var posX = focused.mozInnerScreenX + selection.left;
        var posY = focused.mozInnerScreenY + selection.bottom - 5;   

        tooltip.showPopup(gBrowser, posX, posY);
        setTimeout(()=> gBrowser.removeChild(tooltip), 3000);
     };
     showTooltip();    
  };
   
})(document.getElementById("contentAreaContextMenu"));

bunda1
Замечательно, всё как и хотел. Спасибо!!! thank_you2.gif
ПС Надо бы эту версию кнопки, или информацию о ней вверх поднять. А то в свете последних событий востребованность в таком переключение должна возрасти. ИМХО

25-02-2016 00:40:41
bunda1
Обнаружилось, что перестало добавляться прокси из контекстного меню.

voqabuhe пишет

Обнаружилось, что перестало добавляться прокси из контекстного меню.

А пример можно?

bunda1 пишет

А пример можно?

Не понял, какой пример? Если где прокси брал, то хоть откуда не добавляются. Ну вот например №1, или Прокси Латвия (LV). Латвийские прокси. :)

voqabuhe
Вот так вроде работает:

Выделить код

Код:

// Proxy, от 25.02.2016.


// Настройка функций кликов мыши для кнопки ...................
this.onmousedown =e=> {
   
   this.onmouseup =e=>{                  // левый клик
        if ( e.button ) return;
        clearTimeout(self.timer);           

        switch( cbu.getPrefs("network.proxy.type") ) {
           case 0:  var data = 1; break;            
           case 1:  var data = 2; break; 
           case 2:  var data = 0; break;
           default: var data = 0; 
        }
        cbu.setPrefs("network.proxy.type", data);  
   }

   if ( e.button == 0 )                  // длинный левый клик
        self.timer = setTimeout(()=>{     
           self.onmouseup = '';
           cbu.getPrefs("CB.Proxy.connectionsInTab") ? openConnectionsInTab() : openConnections();
        }, 500);
   
   if ( e.button == 2 )                  // правый клик
        menuPopup.showPopup(self, -1, -1, "popup", "bottomleft", "topleft");
};
self.onclick =e=> e.preventDefault();



// Подсказка для кнопки ...................
this.onmouseover =()=> {
   this.tooltipText = "Proxy \nЛ: Переключить прокси \nДЛ: Открыть настройки прокси"
                    + "\nП: Mеню кнопки \n\nТекущие настройки прокси: " 
                    + "\nIP: " + Services.prefs.getComplexValue("network.proxy.http", Ci.nsISupportsString).data
                    + "\nПорт: "+ cbu.getPrefs("network.proxy.http_port");                                                    
};



// Создать меню для кнопки ...................
var array = [
   { label: "Добавление прокси в контекстом меню", value: 'CB.Proxy.inContextMenu' },
   { label: "Открывать настройки прокси как вкладку", value: 'CB.Proxy.connectionsInTab' },
   { label: "Переключать на режим 'Без прокси' при закрытии браузера ", value: 'CB.Proxy.reset' }    
];

var menuPopup = document.getElementById('mainPopupSet').appendChild(document.createElement("menupopup"));
array.forEach((m)=> {
   var mItem = document.createElement("menuitem");
   mItem.setAttribute("label", m.label);
   mItem.setAttribute('type', 'checkbox');
   mItem.setAttribute('checked', cbu.getPrefs(m.value) );
   mItem.onclick =()=> cbu.setPrefs(m.value, !cbu.getPrefs(m.value));  
   menuPopup.appendChild(mItem);
});
addDestructor(()=> menuPopup.remove() );

// добавить стандартное контекстное меню 
menuPopup.appendChild(document.createElement("menuseparator"));
menuPopup.appendChild(document.createElement("menu")).setAttribute("label", "Меню кнопки");
var clone = menuPopup.lastChild.appendChild(document.getElementById("custombuttons-contextpopup").cloneNode(true));
clone.setAttribute("onpopupshowing", "document.popupNode = document.getElementById('" + _id + "')");



// Функция открывает настройки прокси в окне ...................
function openConnections() {
   for ( var win, nm = Services.wm.getEnumerator(null); win = nm.getNext(); ) 
         if ( win.name == 'Proxy') {
              win.focus();  
              break;
              }
   var win = openDialog("chrome://browser/content/preferences/connection.xul", "Proxy", "centerscreen");

   // добавить атрибут "prefwindow"
   win.addEventListener("load", function f(e) {
       this.removeEventListener("load", f, true); 
       e.target.documentElement.setAttribute("type", "prefwindow");
   }, true );
   
   // закрыть настройки прокси по клику на странице 
   gBrowser.addEventListener("click", function c() {
      this.removeEventListener("click", c );
      try { win.close() } catch(e) {}; 
   }, true );
};



// Функция открывает настройки прокси в вкладке ...................
function openConnectionsInTab() { 
   var connections = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("chrome://browser/content/preferences/connection.xul") ); 
          
   // oбработчик ждет пока откроется прокси, удаляет себя и добавляет атрибут
   connections.addEventListener("pageshow", function c(e) {         
      this.removeEventListener(e.type, c);         
      e.originalTarget.documentElement.setAttribute("type", "prefwindow");
   })   
};



// Установливать нужную иконку кнопки при старте баузера или при изменениях в 'about:config' ...................
var s = "network.proxy.type";
function toggleImage() {
   var icon = self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon");
   switch( cbu.getPrefs(s) ) {
      case 0: icon.src = self.image; break;          
      case 1: icon.src = 'data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAA4GQAAnFmkAHQ5fAAQAKAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAQBJBFQOLQ+nX38ecev/mu6of8gfFvtAyUXewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLUza7PKd//3S7oP2849X9zuvh/mW4mf4XiV7/AB4QZwAAAAAAAAAAAQEBAQAAAAAZGhgTKSwnLyYqJDErKCUnID8vXgaAUP9BlnH8b7ea/ojHrv+q2sf/a7CT+zGWbf8PakXGAAIAAAEBAQMHBwcbAAAAD2BiXn76/ff/4ebg/Onm4f+DtZ7/A31L/j2Wb/+Fwaj/ls23/7rh0v9+vaT+M5du/xKGWO0DIxIdAAAAAAEBAQEAAAABBgYFEaSmorbP08z239vX/4OwnP4ail3/RJlz/5HHsP/T7+X/ms64/3K2mP40k2r/D3tM7AUiExwhIx8meXt1mXt+eKJ3eXSce353n6esouDMysf/o7eq/kOdeP92uZv/vuPT/9Hs4P/C4tT/eLWa+juWbv8bcEq7AAYBAF1gWn7//////f39/P//////////////////////////lcKx/3i9pf/K7OD/2O/l/7ndzf6Fw6n/VK+I/AsxHj8AAAAAXF5bf+Ln2P+AnU/4fZ1N+4WiV/yKp13+jKlh/5CsZf+GpFj/Zpxh/4C5nf+i0L7+k8ex/1udf+UTOCZFAAAAAAEBAQJfYF5/3uXR/16IIPxciiH/Z5Iv/26YOP9ymz3/cpw+/3OcPf9wlzb/YI80/1mKNPu707X/YmZjiAAAAAAEBAQGAAAAAF9gXoDg5tT/cJU6/HGaPf9/pE3/hqtX/4uvXf+NsF7/iKxZ/4KoU/9+o0r/cpY6+9zjyf9ubm2JAAAAAAMEAwQAAAAAX2BegODm1P94nEX8e6JJ/4quXP+Vt2n/nb1z/6LBef+jwXz/ob96/527d/+NrGP71+HG/2praogAAAAABAQDBAAAAABfYF2A4ObU/4WlVvyPsmP/osB7/7HMj/+81J3/wdik/8DXo/+60pz/tc6X/6G6ffvY4sf/amtqiAAAAAAEBAMEAAAAAF9gXn/e5dL/n7l7/LLMk//B16X/zuG2/9jpwv/b68b/2enE/9Pkvv/Q4bv/uMud+9jhyP9qa2mHAAAAAAQEAwQAAAAAX2Bef97k0v+gt335sceT/LrNnfzC1Kj8ydmx/MzatfzK2bP8xtav/MbVr/ywwpL41+HH/2tsaokAAAAABAQDBAAAAABZW1Z3+fz1/+Dm1Pzj6db/5u3b/+nv3v/r8eD/6vDe/+ft2//k69j/4efT/9ngzPv7//b/ZGdhfwAAAAADBAMEAAAAABcZFRpZW1Z6YGFfgWBiYIBhYmGAYmJhgGJjYoBiY2KAYmJhgGFiYYBgYWCAX2BegF1fWoAbHRkeAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA='; break;
      case 2: icon.src = 'data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAAcHQAAYGGkAEBBfAAEBKAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABAQEAAgICAAICAgACAgMBAQEAAAEBJAA6OrQAf3/8ALCw/gCiov8AXl7tABkZewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMAOTm7AIOD/wCjo/0A1tb9AOHh/gCcnP4AY2P/ABISZwAAAAAAAAAAAAEBAQAAAAAAGBgTACgoLwAmJjEAJiYnADIyXgBWVv8Adnb8AJ2d/gCxsf8Aycn/AJeX+wBycv8ASkrGAAACAAABAQMABwcbAAAADwBfX34A+fn/AOHh/ADj4/8AoaH/AFJS/gB1df8Aq6v/ALm5/wDT0/8Ap6f+AHNz/wBeXu0AFRUdAAAAAAABAQEAAAABAAUFEQCjo7YAzs72ANnZ/wCfn/4AY2P/AHl5/wCzs/8A5ub/ALu7/wCcnP4AcHD/AFNT7AAVFRwAICAmAHd3mQB6eqIAdXWcAHl5nwClpeAAyMj/AK2t/gB9ff8An5//ANXV/wDh4f8A1tb/AJ6e+gB0dP8AUFC7AAEGAABcXH4A////AP39/AD///8A////AP///wD///8A////ALOz/wCnp/8A4eH/AObm/wDPz/4ArKz/AI2N/AAhIT8AAAAAAFxcfwDd3f8Aa2v4AGpq+wBycvwAeHj+AHt7/wB/f/8Ac3P/AHNz/wCiov8AwMD+ALS0/wCEhOUAKSlFAAAAAAABAQIAXl5/ANjY/wBGRvwARkb/AFJS/wBaWv8AX1//AF9f/wBfX/8AWVn/AFRU/wBRUfsAvr7/AGNjiAAAAAAABAQGAAAAAABeXoAA2tr/AFtb/ABeXv8AbGz/AHV1/wB6ev8Ae3v/AHd3/wBxcf8Aamr/AFtb+wDS0v8AbW2JAAAAAAADAwQAAAAAAF5egADa2v8AZGT8AGlp/wB5ef8AhYX/AI2N/wCTk/8AlJT/AJKS/wCPj/8AfX37AM/P/wBqaogAAAAAAAMDBAAAAAAAXl6AANra/wBycvwAf3//AJOT/wClpf8AsLD/ALa2/wC1tf8Ar6//AKqq/wCTk/sA0ND/AGpqiAAAAAAAAwMEAAAAAABeXn8A2dn/AJGR/ACnp/8At7f/AMXF/wDQ0P8A09P/ANHR/wDLy/8AyMj/AK2t+wDR0f8AaWmHAAAAAAADAwQAAAAAAF5efwDY2P8AkpL5AKWl/ACurvwAuLj8AL+//ADCwvwAwMD8AL29/AC8vPwAo6P4ANDQ/wBqaokAAAAAAAMDBAAAAAAAV1d3APf3/wDa2vwA3d3/AOHh/wDk5P8A5ub/AOTk/wDh4f8A39//ANra/wDT0/sA+fn/AGNjfwAAAAAAAwMEAAAAAAAWFhoAV1d6AF9fgQBgYIAAYWGAAGFhgABiYoAAYmKAAGFhgABhYYAAYGCAAF5egABbW4AAGhoeAAAAAAABAQEAAAAA/oOAQeEAgEH6AIBBoACAQQAAAEGAAABBAACAQQAAgEEAAQBBAAKAQQACgEEAAoBBAAKAQQACgEEAAoBBAAKAQQACgEE='; break;
      default:icon.src = self.image; 
   }
};  
toggleImage();
gPrefService.addObserver(s, toggleImage, false);
addDestructor(()=> gPrefService.removeObserver(s, toggleImage) );



// Переключать на режим 'Без прокси' при закрытии браузера если это разрешено в 'about:config' ...................
var switchOffProxy = {
    observe: function(subject, topic, data) {
       if ( data == "shutdown" && cbu.getPrefs("CB.Proxy.reset") ) cbu.setPrefs("network.proxy.type", 0);  
    }
};
Services.obs.addObserver(switchOffProxy, "quit-application", false);



// Создаем меню для добавление прокси в контекстном меню выделенного текста на странице ...................
((contextMenu)=> {

  // создать новый пункт меню
  var menuitem = contextMenu.appendChild( document.createElement("menuitem") );      
  menuitem.setAttribute("label", "Добавить прокси"); 
  menuitem.setAttribute("class", "menuitem-iconic");
  menuitem.setAttribute("image", self.image);
  menuitem.onclick =()=> addNewProxy();
  addDestructor(()=> menuitem.remove() );
  
  // устанавливаем где показывать пункт меню 
  addEventListener("popupshowing", ()=>{
     menuitem.hidden = !cbu.getPrefs("CB.Proxy.inContextMenu") || !gContextMenu.isContentSelected; // !gContextMenu.isTextSelected;
  }, false, contextMenu);
  
  
  // добавление прокси
  function addNewProxy(sel) {  
     var selection = document.commandDispatcher.focusedWindow.getSelection().toString();
     var sel = ( sel == undefined ) ? selection : sel.toString();
     sel = sel.replace(/^\s+|\s+$/g, ""); // удалить пробелы, слева и справа от строки
     sel = sel.replace(/\s+/g,":"); // заменить пробелы внутри строки

     // если только порт ...
     if ( sel.length < 6 && isFinite(sel) ) { 
          sel = sel.replace(/:/g, "");
          var lab = 'порт';
          cbu.setPrefs("network.proxy.http_port", +sel);                    
          }
     
     // если только адрес ...
     if ( sel.length > 5 && !/:/.test(sel) && sel.split(".").length == 4 ) {   
          var lab = 'адрес';
          cbu.setPrefs("network.proxy.http", convertFromUnicode("UTF-8", sel));  
          }   
     
     // если адрес и порт ...    
     if ( sel.length > 5 && /:/.test(sel) && sel.split(":").length == 2 && sel.split(".").length == 4 ) {
          var lab = 'адрес и порт';
          var array = sel.split(":");  
          array.forEach((str)=> addNewProxy(str) );          
          }     

     if ( lab == undefined ) return;

     // всплывающая подсказка рядом с выделенным текстом ...     
     function showTooltip() {
        var tooltip = gBrowser.appendChild( document.createElement("tooltip") );
        tooltip.style.cssText = "color: red !important; font-weight: bold !important; font-size: 14px !important; -moz-box-orient: horizontal; text-align: center;";
   
        var image = tooltip.appendChild( document.createElement("image") );
        image.setAttribute("src", self.image);
   
        var label = tooltip.appendChild( document.createElement("label"));
        label.setAttribute("value", "Установлен " + lab + " прокси: " + sel);
    
        var focused = document.commandDispatcher.focusedWindow;
        var selection = focused.getSelection().getRangeAt(0).getBoundingClientRect();
        var posX = focused.mozInnerScreenX + selection.left;
        var posY = focused.mozInnerScreenY + selection.bottom - 5;   

        tooltip.showPopup(gBrowser, posX, posY);
        setTimeout(()=> gBrowser.removeChild(tooltip), 3000);
     };
     showTooltip();    
  };
   
})(document.getElementById("contentAreaContextMenu"));

А за Латвийские прокси спасибо, не знал что такие есть :)

bunda1 пишет

Вот так вроде работает:

Ага, теперь всё как надо. Спасибо большое.

bunda1 пишет

А за Латвийские прокси спасибо, не знал что такие есть :)

yes.gif[email][/email]

Спасибо bunda1 за хорошую кнопку. Не знаю возможно ли реализовать, но неплохо бы иметь вариант включения URL автоматической настройки, через клик по кнопке(ПКМ). Что бы не залезать каждый раз в настройки.

vv07 пишет

но неплохо бы иметь вариант включения URL автоматической настройки, через клик по кнопке(ПКМ). Что бы не залезать каждый раз в настройки.

В теме всего две страницы, их трудно сначало прочитать, а потом просить? :dumb:

voqabuhe
Прочитал, поэтому и спросил. Решения так и не увидел,кроме вашей переписки. Последний приведенный код не работает увы.
Кнопка не отключает прокси, при выходе из браузера.

vv07 пишет

Кнопка не отключает прокси, при выходе из браузера.

Отключает прокси при выходе из браузера: 25-02-2016 20:55:27, я проверил. И URL автоматической настройки можно включить по ЛКМ - иконка будет жёлтой.

bunda1 пишет

vv07 пишет: Кнопка не отключает прокси, при выходе из браузера.Отключает прокси при выходе из браузера: 25-02-2016 20:55:27, я проверил. И URL автоматической настройки можно включить по ЛКМ - иконка будет жёлтой.

FF 38.6 Снова попробовал дважды. Значек остается зеленым.

vv07 пишет

Последний приведенный код не работает увы.

Дык ты так тогда и пиши, что она у тебя не работает.

vv07 прав частично.
По основному функционалу кнопка работает.
Но "переключать на режим *без прокси* при закрытии" не работает в случае перезагрузки браузера.
В принципе, можно оставить так и просто иметь это ввиду.
Или добавить функционал и для перезагрузки.

Ultima2m пишет

Но "переключать на режим *без прокси* при закрытии" не работает в случае перезагрузки браузера.

Ну так и задумано, перезагрузка и закрытие не одно и то.

bunda1 Все отлично. Я только благодарен вам. Пусть будет так.

Спасибо, это супер-кнопка !
Я Вам человечьи иконки принёс и менюшки чуть поправил.. :whistle:

Внешний вид
Bezymyannyj.1464871825.png

Инициализация

Выделить код

Код:

// Proxy, от 25.02.2016.


// Настройка функций кликов мыши для кнопки ...................
this.onmousedown =e=> {
   
   this.onmouseup =e=>{                  // левый клик
        if ( e.button ) return;
        clearTimeout(self.timer);           

        switch( cbu.getPrefs("network.proxy.type") ) {
           case 0:  var data = 1; break;            
           case 1:  var data = 2; break; 
           case 2:  var data = 0; break;
           default: var data = 0; 
        }
        cbu.setPrefs("network.proxy.type", data);  
   }

   if ( e.button == 0 )                  // длинный левый клик
        self.timer = setTimeout(()=>{     
           self.onmouseup = '';
           cbu.getPrefs("CB.Proxy.connectionsInTab") ? openConnectionsInTab() : openConnections();
        }, 500);
   
   if ( e.button == 2 )                  // правый клик
        menuPopup.showPopup(self, -1, -1, "popup", "bottomleft", "topleft");
};
self.onclick =e=> e.preventDefault();



// Подсказка для кнопки ...................
this.onmouseover =()=> {
   this.tooltipText = "Proxy"
+"\n● Без прокси"
+"\n● Ручная настройка"
+"\n● Автоматическая через URL\n"
+ "\nЛ: Переключить режим \nДЛ: Открыть настройки прокси"
+ "\nП: Mеню кнопки \n\nТекущие настройки прокси: " 
+ "\nIP: " + Services.prefs.getComplexValue("network.proxy.http", Ci.nsISupportsString).data
+ "\nПорт: "+ cbu.getPrefs("network.proxy.http_port");                                                    
};



// Создать меню для кнопки ...................
var array = [
   { label: "Добавление прокси через контекстное меню", value: 'CB.Proxy.inContextMenu' },
   { label: "Открывать настройки прокси как вкладку", value: 'CB.Proxy.connectionsInTab' },
   { label: "Переключать на режим 'Без прокси' при закрытии браузера ", value: 'CB.Proxy.reset' }    
];

var menuPopup = document.getElementById('mainPopupSet').appendChild(document.createElement("menupopup"));
array.forEach((m)=> {
   var mItem = document.createElement("menuitem");
   mItem.setAttribute("label", m.label);
   mItem.setAttribute('type', 'checkbox');
   mItem.setAttribute('checked', cbu.getPrefs(m.value) );
   mItem.onclick =()=> cbu.setPrefs(m.value, !cbu.getPrefs(m.value));  
   menuPopup.appendChild(mItem);
});
addDestructor(()=> menuPopup.remove() );

// добавить стандартное контекстное меню 
menuPopup.appendChild(document.createElement("menuseparator"));
menuPopup.appendChild(document.createElement("menu")).setAttribute("label", "Меню кнопки");
var clone = menuPopup.lastChild.appendChild(document.getElementById("custombuttons-contextpopup").cloneNode(true));
clone.setAttribute("onpopupshowing", "document.popupNode = document.getElementById('" + _id + "')");



// Функция открывает настройки прокси в окне ...................
function openConnections() {
   for ( var win, nm = Services.wm.getEnumerator(null); win = nm.getNext(); ) 
         if ( win.name == 'Proxy') {
              win.focus();  
              break;
              }
   var win = openDialog("chrome://browser/content/preferences/connection.xul", "Proxy", "centerscreen");

   // добавить атрибут "prefwindow"
   win.addEventListener("load", function f(e) {
       this.removeEventListener("load", f, true); 
       e.target.documentElement.setAttribute("type", "prefwindow");
   }, true );
   
   // закрыть настройки прокси по клику на странице 
   gBrowser.addEventListener("click", function c() {
      this.removeEventListener("click", c );
      try { win.close() } catch(e) {}; 
   }, true );
};



// Функция открывает настройки прокси в вкладке ...................
function openConnectionsInTab() { 
   var connections = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("chrome://browser/content/preferences/connection.xul") ); 
          
   // oбработчик ждет пока откроется прокси, удаляет себя и добавляет атрибут
   connections.addEventListener("pageshow", function c(e) {         
      this.removeEventListener(e.type, c);         
      e.originalTarget.documentElement.setAttribute("type", "prefwindow");
   })   
};



// Установливать нужную иконку кнопки при старте баузера или при изменениях в 'about:config' ...................
var s = "network.proxy.type";
function toggleImage() {
   var icon = self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon");
   switch( cbu.getPrefs(s) ) {
      case 0: icon.src = self.image; break;          
      case 1: icon.src = 'data:image/png;base64,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'; break;
      case 2: icon.src = 'data:image/png;base64,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'; break;
      default:icon.src = self.image; 
   }
};  
toggleImage();
gPrefService.addObserver(s, toggleImage, false);
addDestructor(()=> gPrefService.removeObserver(s, toggleImage) );



// Переключать на режим 'Без прокси' при закрытии браузера если это разрешено в 'about:config' ...................
var switchOffProxy = {
    observe: function(subject, topic, data) {
       if ( data == "shutdown" && cbu.getPrefs("CB.Proxy.reset") ) cbu.setPrefs("network.proxy.type", 0);  
    }
};
Services.obs.addObserver(switchOffProxy, "quit-application", false);



// Создаем меню для добавление прокси в контекстном меню выделенного текста на странице ...................
((contextMenu)=> {

  // создать новый пункт меню
  var menuitem = contextMenu.appendChild( document.createElement("menuitem") );      
  menuitem.setAttribute("label", "Добавить прокси"); 
  menuitem.setAttribute("class", "menuitem-iconic");
  menuitem.setAttribute("image", self.image);
  menuitem.onclick =()=> addNewProxy();
  addDestructor(()=> menuitem.remove() );
  
  // устанавливаем где показывать пункт меню 
  addEventListener("popupshowing", ()=>{
     menuitem.hidden = !cbu.getPrefs("CB.Proxy.inContextMenu") || !gContextMenu.isContentSelected; // !gContextMenu.isTextSelected;
  }, false, contextMenu);
  
  
  // добавление прокси
  function addNewProxy(sel) {  
     var selection = document.commandDispatcher.focusedWindow.getSelection().toString();
     var sel = ( sel == undefined ) ? selection : sel.toString();
     sel = sel.replace(/^\s+|\s+$/g, ""); // удалить пробелы, слева и справа от строки
     sel = sel.replace(/\s+/g,":"); // заменить пробелы внутри строки

     // если только порт ...
     if ( sel.length < 6 && isFinite(sel) ) { 
          sel = sel.replace(/:/g, "");
          var lab = 'порт';
          cbu.setPrefs("network.proxy.http_port", +sel);                    
          }
     
     // если только адрес ...
     if ( sel.length > 5 && !/:/.test(sel) && sel.split(".").length == 4 ) {   
          var lab = 'адрес';
          cbu.setPrefs("network.proxy.http", convertFromUnicode("UTF-8", sel));  
          }   
     
     // если адрес и порт ...    
     if ( sel.length > 5 && /:/.test(sel) && sel.split(":").length == 2 && sel.split(".").length == 4 ) {
          var lab = 'адрес и порт';
          var array = sel.split(":");  
          array.forEach((str)=> addNewProxy(str) );          
          }     

     if ( lab == undefined ) return;

     // всплывающая подсказка рядом с выделенным текстом ...     
     function showTooltip() {
        var tooltip = gBrowser.appendChild( document.createElement("tooltip") );
        tooltip.style.cssText = "color: red !important; font-weight: bold !important; font-size: 14px !important; -moz-box-orient: horizontal; text-align: center;";
   
        var image = tooltip.appendChild( document.createElement("image") );
        image.setAttribute("src", self.image);
   
        var label = tooltip.appendChild( document.createElement("label"));
        label.setAttribute("value", "Установлен " + lab + " прокси: " + sel);
    
        var focused = document.commandDispatcher.focusedWindow;
        var selection = focused.getSelection().getRangeAt(0).getBoundingClientRect();
        var posX = focused.mozInnerScreenX + selection.left;
        var posY = focused.mozInnerScreenY + selection.bottom - 5;   

        tooltip.showPopup(gBrowser, posX, posY);
        setTimeout(()=> gBrowser.removeChild(tooltip), 3000);
     };
     showTooltip();    
  };
   
})(document.getElementById("contentAreaContextMenu"));


Подскажите пожалуйста насчёт иконок, какого размера их лучше делать ? Пробовал 16х16 это ппц, 32х32 как будто кто откусывает кусочек, остановился на 64х64..
Может есть какой мануал по СВ ?

Посмотрите, не работает открыть настройки прокси если ДЛ [firefox]48 или ето у меня так.

broker пишет

Посмотрите, не работает открыть настройки прокси если ДЛ [firefox]48 или ето у меня так.

Действително на Firefox48 появился такой глюк. Вот вроде исправил: Proxy

bunda1
А в [nightly] открывает. :)

voqabuhe пишет

bunda1
А в [nightly] открывает. :)

Нет, в [nightly] настройки прокси в окне старая версия кнопки тоже не открывет.

У меня в обновленной кнопке не включается режим "url авт. настройки" А старая работает нормально

Ultima2m пишет

У меня в обновленной кнопке не включается режим "url авт. настройки"

А как ты включаешь режим "url авт. настройки"?

bunda1 пишет

Нет, в [nightly] настройки прокси в окне старая версия кнопки тоже не открывет.

Но у меня открывает, кнопку не обновлял, установлена версия Proxy, от 25.02.2016.

voqabuhe пишет
bunda1 пишет

Нет, в [nightly] настройки прокси в окне старая версия кнопки тоже не открывет.

Но у меня открывает, кнопку не обновлял, установлена версия Proxy, от 25.02.2016.

Настройки прокси в окошке а не в вкладке?

bunda1 пишет

Настройки прокси в окошке а не в вкладке?

Да.

bunda1 пишет

А как ты включаешь режим "url авт. настройки"?

Там последовательный перебор - 3 положения.
кнопка

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

Выделить код

Код:

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%3EProxy%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAAYOQAAWJ2kADh1fAAAEKAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAEEJBE4ULQ+fZ38ea/H/muhuv8gW3ztAxclewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLNlO7PH+n/3Sgu/281eP9zuHr/mWZuP4XXon/ABAeZwAAAAAAAAAAAQEBAQAAAAAZGBoTKScsLyYkKjErJSgnIC8/XgZQgP9BcZb8b5q3/oiux/+qx9r/a5Ow+zFtlv8PRWrGAAACAAEBAQMHBwcbAAAAD2BeYn769/3/4eDm/Onh5v+DnrX/A0t9/j1vlv+FqMH/lrfN/7rS4f9+pL3+M26X/xJYhu0DEiMdAAAAAAEBAQEAAAABBgUGEaSiprbPzNP239fb/4OcsP4aXYr/RHOZ/5Gwx//T5e//mrjO/3KYtv40apP/D0x77AUTIhwhHyMmeXV7mXt4fqJ3dHmce3d+n6eirODMx8r/o6q3/kN4nf92m7n/vtPj/9Hg7P/C1OL/eJq1+jtulv8bSnC7AAEGAF1aYH7//////f39/P//////////////////////////lbHC/3ilvf/K4Oz/2OXv/7nN3f6FqcP/VIiv/AseMT8AAAAAXFtef+LY5/+AT534fU2d+4VXovyKXaf+jGGp/5BlrP+GWKT/ZmGc/4Cduf+ivtD+k7HH/1t/neUTJjhFAAAAAAEBAQJfXmB/3tHl/14giPxcIYr/Zy+S/244mP9yPZv/cj6c/3M9nP9wNpf/YDSP/1k0ivu7tdP/YmNmiAAAAAAEBAQGAAAAAF9eYIDg1Ob/cDqV/HE9mv9/TaT/hler/4tdr/+NXrD/iFms/4JTqP9+SqP/cjqW+9zJ4/9ubW6JAAAAAAMDBAQAAAAAX15ggODU5v94RZz8e0mi/4pcrv+Vabf/nXO9/6J5wf+jfMH/oXq//513u/+NY6z718bh/2pqa4gAAAAABAMEBAAAAABfXWCA4NTm/4VWpfyPY7L/onvA/7GPzP+8ndT/waTY/8Cj1/+6nNL/tZfO/6F9uvvYx+L/ampriAAAAAAEAwQEAAAAAF9eYH/e0uX/n3u5/LKTzP/Bpdf/zrbh/9jC6f/bxuv/2cTp/9O+5P/Qu+H/uJ3L+9jI4f9qaWuHAAAAAAQDBAQAAAAAX15gf97S5P+gfbf5sZPH/LqdzfzCqNT8ybHZ/My12vzKs9n8xq/W/Mav1fywksL418fh/2tqbIkAAAAABAMEBAAAAABZVlt3+fX8/+DU5vzj1un/5tvt/+ne7//r4PH/6t7w/+fb7f/k2Ov/4dPn/9nM4Pv79v//ZGFnfwAAAAADAwQEAAAAABcVGRpZVlt6YF9hgWBgYoBhYWKAYmFigGJiY4BiYmOAYmFigGFhYoBgYGGAX15ggF1aX4AbGR0eAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20Proxy%2C%20%u043E%u0442%2025.02.2016.%0A%0A%0A//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Athis.onmousedown%20%3De%3D%3E%20%7B%0A%20%20%20%0A%20%20%20this.onmouseup%20%3De%3D%3E%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u043B%u0435%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%0A%20%20%20%20%20%20%20%20if%20%28%20e.button%20%29%20return%3B%0A%20%20%20%20%20%20%20%20clearTimeout%28self.timer%29%3B%20%20%20%20%20%20%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20switch%28%20cbu.getPrefs%28%22network.proxy.type%22%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20case%200%3A%20%20var%20data%20%3D%201%3B%20break%3B%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20case%201%3A%20%20var%20data%20%3D%202%3B%20break%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20case%202%3A%20%20var%20data%20%3D%200%3B%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20default%3A%20var%20data%20%3D%200%3B%20%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.type%22%2C%20data%29%3B%20%20%0A%20%20%20%7D%0A%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u0434%u043B%u0438%u043D%u043D%u044B%u0439%20%u043B%u0435%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%0A%20%20%20%20%20%20%20%20self.timer%20%3D%20setTimeout%28%28%29%3D%3E%7B%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20self.onmouseup%20%3D%20%27%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20cbu.getPrefs%28%22CB.Proxy.connectionsInTab%22%29%20%3F%20openConnectionsInTab%28%29%20%3A%20openConnections%28%29%3B%0A%20%20%20%20%20%20%20%20%7D%2C%20500%29%3B%0A%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%20%29%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u043F%u0440%u0430%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%0A%20%20%20%20%20%20%20%20menuPopup.showPopup%28self%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%7D%3B%0Aself.onclick%20%3De%3D%3E%20e.preventDefault%28%29%3B%0A%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Athis.onmouseover%20%3D%28%29%3D%3E%20%7B%0A%20%20%20this.tooltipText%20%3D%20%22Proxy%20%5Cn%u041B%3A%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u043F%u0440%u043E%u043A%u0441%u0438%20%5Cn%u0414%u041B%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%u041F%3A%20M%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%20%5Cn%5Cn%u0422%u0435%u043A%u0443%u0449%u0438%u0435%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%3A%20%22%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5CnIP%3A%20%22%20+%20Services.prefs.getComplexValue%28%22network.proxy.http%22%2C%20Ci.nsISupportsString%29.data%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%u041F%u043E%u0440%u0442%3A%20%22+%20cbu.getPrefs%28%22network.proxy.http_port%22%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%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%7D%3B%0A%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Avar%20array%20%3D%20%5B%0A%20%20%20%7B%20label%3A%20%22%u0414%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043E%u043C%20%u043C%u0435%u043D%u044E%22%2C%20value%3A%20%27CB.Proxy.inContextMenu%27%20%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u041E%u0442%u043A%u0440%u044B%u0432%u0430%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u043A%u0430%u043A%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%22%2C%20value%3A%20%27CB.Proxy.connectionsInTab%27%20%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u043D%u0430%20%u0440%u0435%u0436%u0438%u043C%20%27%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%27%20%u043F%u0440%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0438%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%22%2C%20value%3A%20%27CB.Proxy.reset%27%20%7D%20%20%20%20%0A%5D%3B%0A%0Avar%20menuPopup%20%3D%20document.getElementById%28%27mainPopupSet%27%29.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0Aarray.forEach%28%28m%29%3D%3E%20%7B%0A%20%20%20var%20mItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20mItem.setAttribute%28%22label%22%2C%20m.label%29%3B%0A%20%20%20mItem.setAttribute%28%27type%27%2C%20%27checkbox%27%29%3B%0A%20%20%20mItem.setAttribute%28%27checked%27%2C%20cbu.getPrefs%28m.value%29%20%29%3B%0A%20%20%20mItem.onclick%20%3D%28%29%3D%3E%20cbu.setPrefs%28m.value%2C%20%21cbu.getPrefs%28m.value%29%29%3B%20%20%0A%20%20%20menuPopup.appendChild%28mItem%29%3B%0A%7D%29%3B%0AaddDestructor%28%28%29%3D%3E%20menuPopup.remove%28%29%20%29%3B%0A%0A//%20%u0434%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0441%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u043E%u0435%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%0AmenuPopup.appendChild%28document.createElement%28%22menuseparator%22%29%29%3B%0AmenuPopup.appendChild%28document.createElement%28%22menu%22%29%29.setAttribute%28%22label%22%2C%20%22%u041C%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%22%29%3B%0Avar%20clone%20%3D%20menuPopup.lastChild.appendChild%28document.getElementById%28%22custombuttons-contextpopup%22%29.cloneNode%28true%29%29%3B%0Aclone.setAttribute%28%22onpopupshowing%22%2C%20%22document.popupNode%20%3D%20document.getElementById%28%27%22%20+%20_id%20+%20%22%27%29%22%29%3B%0A%0A%0A%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043E%u043A%u043D%u0435%20...................%0Afunction%20openConnections%28%29%20%7B%0A%20%20%20for%20%28%20var%20win%2C%20nm%20%3D%20Services.wm.getEnumerator%28null%29%3B%20win%20%3D%20nm.getNext%28%29%3B%20%29%20%0A%20%20%20%20%20%20%20%20%20if%20%28%20win.name%20%3D%3D%20%27Proxy%27%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.focus%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20var%20win%20%3D%20openDialog%28%22chrome%3A//browser/content/preferences/connection.xul%22%2C%20%22Proxy%22%2C%20%22centerscreen%22%29%3B%0A%0A%20%20%20//%20%u0434%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%20%22prefwindow%22%0A%20%20%20win.addEventListener%28%22load%22%2C%20function%20f%28e%29%20%7B%0A%20%20%20%20%20%20%20this.removeEventListener%28%22load%22%2C%20f%2C%20true%29%3B%20%0A%20%20%20%20%20%20%20e.target.documentElement.setAttribute%28%22type%22%2C%20%22prefwindow%22%29%3B%0A%20%20%20%7D%2C%20true%20%29%3B%0A%20%20%20%0A%20%20%20//%20%u0437%u0430%u043A%u0440%u044B%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u043F%u043E%20%u043A%u043B%u0438%u043A%u0443%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%0A%20%20%20gBrowser.addEventListener%28%22click%22%2C%20function%20c%28%29%20%7B%0A%20%20%20%20%20%20this.removeEventListener%28%22click%22%2C%20c%20%29%3B%0A%20%20%20%20%20%20try%20%7B%20win.close%28%29%20%7D%20catch%28e%29%20%7B%7D%3B%20%0A%20%20%20%7D%2C%20true%20%29%3B%0A%7D%3B%0A%0A%0A%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20...................%0Afunction%20openConnectionsInTab%28%29%20%7B%20%0A%20%20%20var%20connections%20%3D%20gBrowser.getBrowserForTab%28%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28%22chrome%3A//browser/content/preferences/connection.xul%22%29%20%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20//%20o%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%20%u0436%u0434%u0435%u0442%20%u043F%u043E%u043A%u0430%20%u043E%u0442%u043A%u0440%u043E%u0435%u0442%u0441%u044F%20%u043F%u0440%u043E%u043A%u0441%u0438%2C%20%u0443%u0434%u0430%u043B%u044F%u0435%u0442%20%u0441%u0435%u0431%u044F%20%u0438%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%0A%20%20%20connections.addEventListener%28%22pageshow%22%2C%20function%20c%28e%29%20%7B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20this.removeEventListener%28e.type%2C%20c%29%3B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20e.originalTarget.documentElement.setAttribute%28%22type%22%2C%20%22prefwindow%22%29%3B%0A%20%20%20%7D%29%20%20%20%0A%7D%3B%0A%0A%0A%0A//%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0438%u0432%u0430%u0442%u044C%20%u043D%u0443%u0436%u043D%u0443%u044E%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u0440%u0438%20%u0441%u0442%u0430%u0440%u0442%u0435%20%u0431%u0430%u0443%u0437%u0435%u0440%u0430%20%u0438%u043B%u0438%20%u043F%u0440%u0438%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%u0445%20%u0432%20%27about%3Aconfig%27%20...................%0Avar%20s%20%3D%20%22network.proxy.type%22%3B%0Afunction%20toggleImage%28%29%20%7B%0A%20%20%20var%20icon%20%3D%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0A%20%20%20switch%28%20cbu.getPrefs%28s%29%20%29%20%7B%0A%20%20%20%20%20%20case%200%3A%20icon.src%20%3D%20self.image%3B%20break%3B%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20case%201%3A%20icon.src%20%3D%20%27data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAA4GQAAnFmkAHQ5fAAQAKAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAQBJBFQOLQ+nX38ecev/mu6of8gfFvtAyUXewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLUza7PKd//3S7oP2849X9zuvh/mW4mf4XiV7/AB4QZwAAAAAAAAAAAQEBAQAAAAAZGhgTKSwnLyYqJDErKCUnID8vXgaAUP9BlnH8b7ea/ojHrv+q2sf/a7CT+zGWbf8PakXGAAIAAAEBAQMHBwcbAAAAD2BiXn76/ff/4ebg/Onm4f+DtZ7/A31L/j2Wb/+Fwaj/ls23/7rh0v9+vaT+M5du/xKGWO0DIxIdAAAAAAEBAQEAAAABBgYFEaSmorbP08z239vX/4OwnP4ail3/RJlz/5HHsP/T7+X/ms64/3K2mP40k2r/D3tM7AUiExwhIx8meXt1mXt+eKJ3eXSce353n6esouDMysf/o7eq/kOdeP92uZv/vuPT/9Hs4P/C4tT/eLWa+juWbv8bcEq7AAYBAF1gWn7//////f39/P//////////////////////////lcKx/3i9pf/K7OD/2O/l/7ndzf6Fw6n/VK+I/AsxHj8AAAAAXF5bf+Ln2P+AnU/4fZ1N+4WiV/yKp13+jKlh/5CsZf+GpFj/Zpxh/4C5nf+i0L7+k8ex/1udf+UTOCZFAAAAAAEBAQJfYF5/3uXR/16IIPxciiH/Z5Iv/26YOP9ymz3/cpw+/3OcPf9wlzb/YI80/1mKNPu707X/YmZjiAAAAAAEBAQGAAAAAF9gXoDg5tT/cJU6/HGaPf9/pE3/hqtX/4uvXf+NsF7/iKxZ/4KoU/9+o0r/cpY6+9zjyf9ubm2JAAAAAAMEAwQAAAAAX2BegODm1P94nEX8e6JJ/4quXP+Vt2n/nb1z/6LBef+jwXz/ob96/527d/+NrGP71+HG/2praogAAAAABAQDBAAAAABfYF2A4ObU/4WlVvyPsmP/osB7/7HMj/+81J3/wdik/8DXo/+60pz/tc6X/6G6ffvY4sf/amtqiAAAAAAEBAMEAAAAAF9gXn/e5dL/n7l7/LLMk//B16X/zuG2/9jpwv/b68b/2enE/9Pkvv/Q4bv/uMud+9jhyP9qa2mHAAAAAAQEAwQAAAAAX2Bef97k0v+gt335sceT/LrNnfzC1Kj8ydmx/MzatfzK2bP8xtav/MbVr/ywwpL41+HH/2tsaokAAAAABAQDBAAAAABZW1Z3+fz1/+Dm1Pzj6db/5u3b/+nv3v/r8eD/6vDe/+ft2//k69j/4efT/9ngzPv7//b/ZGdhfwAAAAADBAMEAAAAABcZFRpZW1Z6YGFfgWBiYIBhYmGAYmJhgGJjYoBiY2KAYmJhgGFiYYBgYWCAX2BegF1fWoAbHRkeAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%27%3B%20break%3B%0A%20%20%20%20%20%20case%202%3A%20icon.src%20%3D%20%27data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAAcHQAAYGGkAEBBfAAEBKAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABAQEAAgICAAICAgACAgMBAQEAAAEBJAA6OrQAf3/8ALCw/gCiov8AXl7tABkZewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMAOTm7AIOD/wCjo/0A1tb9AOHh/gCcnP4AY2P/ABISZwAAAAAAAAAAAAEBAQAAAAAAGBgTACgoLwAmJjEAJiYnADIyXgBWVv8Adnb8AJ2d/gCxsf8Aycn/AJeX+wBycv8ASkrGAAACAAABAQMABwcbAAAADwBfX34A+fn/AOHh/ADj4/8AoaH/AFJS/gB1df8Aq6v/ALm5/wDT0/8Ap6f+AHNz/wBeXu0AFRUdAAAAAAABAQEAAAABAAUFEQCjo7YAzs72ANnZ/wCfn/4AY2P/AHl5/wCzs/8A5ub/ALu7/wCcnP4AcHD/AFNT7AAVFRwAICAmAHd3mQB6eqIAdXWcAHl5nwClpeAAyMj/AK2t/gB9ff8An5//ANXV/wDh4f8A1tb/AJ6e+gB0dP8AUFC7AAEGAABcXH4A////AP39/AD///8A////AP///wD///8A////ALOz/wCnp/8A4eH/AObm/wDPz/4ArKz/AI2N/AAhIT8AAAAAAFxcfwDd3f8Aa2v4AGpq+wBycvwAeHj+AHt7/wB/f/8Ac3P/AHNz/wCiov8AwMD+ALS0/wCEhOUAKSlFAAAAAAABAQIAXl5/ANjY/wBGRvwARkb/AFJS/wBaWv8AX1//AF9f/wBfX/8AWVn/AFRU/wBRUfsAvr7/AGNjiAAAAAAABAQGAAAAAABeXoAA2tr/AFtb/ABeXv8AbGz/AHV1/wB6ev8Ae3v/AHd3/wBxcf8Aamr/AFtb+wDS0v8AbW2JAAAAAAADAwQAAAAAAF5egADa2v8AZGT8AGlp/wB5ef8AhYX/AI2N/wCTk/8AlJT/AJKS/wCPj/8AfX37AM/P/wBqaogAAAAAAAMDBAAAAAAAXl6AANra/wBycvwAf3//AJOT/wClpf8AsLD/ALa2/wC1tf8Ar6//AKqq/wCTk/sA0ND/AGpqiAAAAAAAAwMEAAAAAABeXn8A2dn/AJGR/ACnp/8At7f/AMXF/wDQ0P8A09P/ANHR/wDLy/8AyMj/AK2t+wDR0f8AaWmHAAAAAAADAwQAAAAAAF5efwDY2P8AkpL5AKWl/ACurvwAuLj8AL+//ADCwvwAwMD8AL29/AC8vPwAo6P4ANDQ/wBqaokAAAAAAAMDBAAAAAAAV1d3APf3/wDa2vwA3d3/AOHh/wDk5P8A5ub/AOTk/wDh4f8A39//ANra/wDT0/sA+fn/AGNjfwAAAAAAAwMEAAAAAAAWFhoAV1d6AF9fgQBgYIAAYWGAAGFhgABiYoAAYmKAAGFhgABhYYAAYGCAAF5egABbW4AAGhoeAAAAAAABAQEAAAAA/oOAQeEAgEH6AIBBoACAQQAAAEGAAABBAACAQQAAgEEAAQBBAAKAQQACgEEAAoBBAAKAQQACgEEAAoBBAAKAQQACgEE%3D%27%3B%20break%3B%0A%20%20%20%20%20%20default%3Aicon.src%20%3D%20self.image%3B%20%0A%20%20%20%7D%0A%7D%3B%20%20%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28%28%29%3D%3E%20gPrefService.removeObserver%28s%2C%20toggleImage%29%20%29%3B%0A%0A%0A%0A//%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u043D%u0430%20%u0440%u0435%u0436%u0438%u043C%20%27%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%27%20%u043F%u0440%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0438%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20...................%0Avar%20switchOffProxy%20%3D%20%7B%0A%20%20%20%20observe%3A%20function%28subject%2C%20topic%2C%20data%29%20%7B%0A%20%20%20%20%20%20%20if%20%28%20data%20%3D%3D%20%22shutdown%22%20%26%26%20cbu.getPrefs%28%22CB.Proxy.reset%22%29%20%29%20cbu.setPrefs%28%22network.proxy.type%22%2C%200%29%3B%20%20%0A%20%20%20%20%7D%0A%7D%3B%0AServices.obs.addObserver%28switchOffProxy%2C%20%22quit-application%22%2C%20false%29%3B%0A%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0435%u043C%20%u043C%u0435%u043D%u044E%20%u0434%u043B%u044F%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u043C%20%u043C%u0435%u043D%u044E%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20...................%0A%28%28contextMenu%29%3D%3E%20%7B%0A%0A%20%20//%20%u0441%u043E%u0437%u0434%u0430%u0442%u044C%20%u043D%u043E%u0432%u044B%u0439%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E%0A%20%20var%20menuitem%20%3D%20contextMenu.appendChild%28%20document.createElement%28%22menuitem%22%29%20%29%3B%20%20%20%20%20%20%0A%20%20menuitem.setAttribute%28%22label%22%2C%20%22%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u043F%u0440%u043E%u043A%u0441%u0438%22%29%3B%20%0A%20%20menuitem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%0A%20%20menuitem.setAttribute%28%22image%22%2C%20self.image%29%3B%0A%20%20menuitem.onclick%20%3D%28%29%3D%3E%20addNewProxy%28%29%3B%0A%20%20addDestructor%28%28%29%3D%3E%20menuitem.remove%28%29%20%29%3B%0A%20%20%0A%20%20//%20%u0443%u0441%u0442%u0430%u043D%u0430%u0432%u043B%u0438%u0432%u0430%u0435%u043C%20%u0433%u0434%u0435%20%u043F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E%20%0A%20%20addEventListener%28%22popupshowing%22%2C%20%28%29%3D%3E%7B%0A%20%20%20%20%20menuitem.hidden%20%3D%20%21cbu.getPrefs%28%22CB.Proxy.inContextMenu%22%29%20%7C%7C%20%21gContextMenu.isContentSelected%3B%20//%20%21gContextMenu.isTextSelected%3B%0A%20%20%7D%2C%20false%2C%20contextMenu%29%3B%0A%20%20%0A%20%20%0A%20%20//%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%0A%20%20function%20addNewProxy%28sel%29%20%7B%20%20%0A%20%20%20%20%20var%20selection%20%3D%20document.commandDispatcher.focusedWindow.getSelection%28%29.toString%28%29%3B%0A%20%20%20%20%20var%20sel%20%3D%20%28%20sel%20%3D%3D%20undefined%20%29%20%3F%20selection%20%3A%20sel.toString%28%29%3B%0A%20%20%20%20%20sel%20%3D%20sel.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%20%22%22%29%3B%20//%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%2C%20%u0441%u043B%u0435%u0432%u0430%20%u0438%20%u0441%u043F%u0440%u0430%u0432%u0430%20%u043E%u0442%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%20%20%20%20%20sel%20%3D%20sel.replace%28/%5Cs+/g%2C%22%3A%22%29%3B%20//%20%u0437%u0430%u043C%u0435%u043D%u0438%u0442%u044C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%20%u0432%u043D%u0443%u0442%u0440%u0438%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%0A%20%20%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u043F%u043E%u0440%u0442%20...%0A%20%20%20%20%20if%20%28%20sel.length%20%3C%206%20%26%26%20isFinite%28sel%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20sel%20%3D%20sel.replace%28/%3A/g%2C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u043F%u043E%u0440%u0442%27%3B%0A%20%20%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.http_port%22%2C%20+sel%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u0430%u0434%u0440%u0435%u0441%20...%0A%20%20%20%20%20if%20%28%20sel.length%20%3E%205%20%26%26%20%21/%3A/.test%28sel%29%20%26%26%20sel.split%28%22.%22%29.length%20%3D%3D%204%20%29%20%7B%20%20%20%0A%20%20%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u0430%u0434%u0440%u0435%u0441%27%3B%0A%20%20%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.http%22%2C%20convertFromUnicode%28%22UTF-8%22%2C%20sel%29%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0430%u0434%u0440%u0435%u0441%20%u0438%20%u043F%u043E%u0440%u0442%20...%20%20%20%20%0A%20%20%20%20%20if%20%28%20sel.length%20%3E%205%20%26%26%20/%3A/.test%28sel%29%20%26%26%20sel.split%28%22%3A%22%29.length%20%3D%3D%202%20%26%26%20sel.split%28%22.%22%29.length%20%3D%3D%204%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u0430%u0434%u0440%u0435%u0441%20%u0438%20%u043F%u043E%u0440%u0442%27%3B%0A%20%20%20%20%20%20%20%20%20%20var%20array%20%3D%20sel.split%28%22%3A%22%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20array.forEach%28%28str%29%3D%3E%20addNewProxy%28str%29%20%29%3B%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%0A%0A%20%20%20%20%20if%20%28%20lab%20%3D%3D%20undefined%20%29%20return%3B%0A%0A%20%20%20%20%20//%20%u0432%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0440%u044F%u0434%u043E%u043C%20%u0441%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u043C%20%u0442%u0435%u043A%u0441%u0442%u043E%u043C%20...%20%20%20%20%20%0A%20%20%20%20%20function%20showTooltip%28%29%20%7B%0A%20%20%20%20%20%20%20%20var%20tooltip%20%3D%20gBrowser.appendChild%28%20document.createElement%28%22tooltip%22%29%20%29%3B%0A%20%20%20%20%20%20%20%20tooltip.style.cssText%20%3D%20%22color%3A%20red%20%21important%3B%20font-weight%3A%20bold%20%21important%3B%20font-size%3A%2014px%20%21important%3B%20-moz-box-orient%3A%20horizontal%3B%20text-align%3A%20center%3B%22%3B%0A%20%20%20%0A%20%20%20%20%20%20%20%20var%20image%20%3D%20tooltip.appendChild%28%20document.createElement%28%22image%22%29%20%29%3B%0A%20%20%20%20%20%20%20%20image.setAttribute%28%22src%22%2C%20self.image%29%3B%0A%20%20%20%0A%20%20%20%20%20%20%20%20var%20label%20%3D%20tooltip.appendChild%28%20document.createElement%28%22label%22%29%29%3B%0A%20%20%20%20%20%20%20%20label.setAttribute%28%22value%22%2C%20%22%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0435%u043D%20%22%20+%20lab%20+%20%22%20%u043F%u0440%u043E%u043A%u0441%u0438%3A%20%22%20+%20sel%29%3B%0A%20%20%20%20%0A%20%20%20%20%20%20%20%20var%20focused%20%3D%20document.commandDispatcher.focusedWindow%3B%0A%20%20%20%20%20%20%20%20var%20selection%20%3D%20focused.getSelection%28%29.getRangeAt%280%29.getBoundingClientRect%28%29%3B%0A%20%20%20%20%20%20%20%20var%20posX%20%3D%20focused.mozInnerScreenX%20+%20selection.left%3B%0A%20%20%20%20%20%20%20%20var%20posY%20%3D%20focused.mozInnerScreenY%20+%20selection.bottom%20-%205%3B%20%20%20%0A%0A%20%20%20%20%20%20%20%20tooltip.showPopup%28gBrowser%2C%20posX%2C%20posY%29%3B%0A%20%20%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20gBrowser.removeChild%28tooltip%29%2C%203000%29%3B%0A%20%20%20%20%20%7D%3B%0A%20%20%20%20%20showTooltip%28%29%3B%20%20%20%20%0A%20%20%7D%3B%0A%20%20%20%0A%7D%29%28document.getElementById%28%22contentAreaContextMenu%22%29%29%3B%20%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


инициализация
скрытый текст

Выделить код

Код:

// Proxy, от 25.02.2016.


// Настройка функций кликов мыши для кнопки ...................
this.onmousedown =e=> {
   
   this.onmouseup =e=>{                  // левый клик
        if ( e.button ) return;
        clearTimeout(self.timer);           

        switch( cbu.getPrefs("network.proxy.type") ) {
           case 0:  var data = 1; break;            
           case 1:  var data = 2; break; 
           case 2:  var data = 0; break;
           default: var data = 0; 
        }
        cbu.setPrefs("network.proxy.type", data);  
   }

   if ( e.button == 0 )                  // длинный левый клик
        self.timer = setTimeout(()=>{     
           self.onmouseup = '';
           cbu.getPrefs("CB.Proxy.connectionsInTab") ? openConnectionsInTab() : openConnections();
        }, 500);
   
   if ( e.button == 2 )                  // правый клик
        menuPopup.showPopup(self, -1, -1, "popup", "bottomleft", "topleft");
};
self.onclick =e=> e.preventDefault();



// Подсказка для кнопки ...................
this.onmouseover =()=> {
   this.tooltipText = "Proxy \nЛ: Переключить прокси \nДЛ: Открыть настройки прокси"
                    + "\nП: Mеню кнопки \n\nТекущие настройки прокси: " 
                    + "\nIP: " + Services.prefs.getComplexValue("network.proxy.http", Ci.nsISupportsString).data
                    + "\nПорт: "+ cbu.getPrefs("network.proxy.http_port");                                                    
};



// Создать меню для кнопки ...................
var array = [
   { label: "Добавление прокси в контекстом меню", value: 'CB.Proxy.inContextMenu' },
   { label: "Открывать настройки прокси как вкладку", value: 'CB.Proxy.connectionsInTab' },
   { label: "Переключать на режим 'Без прокси' при закрытии браузера ", value: 'CB.Proxy.reset' }    
];

var menuPopup = document.getElementById('mainPopupSet').appendChild(document.createElement("menupopup"));
array.forEach((m)=> {
   var mItem = document.createElement("menuitem");
   mItem.setAttribute("label", m.label);
   mItem.setAttribute('type', 'checkbox');
   mItem.setAttribute('checked', cbu.getPrefs(m.value) );
   mItem.onclick =()=> cbu.setPrefs(m.value, !cbu.getPrefs(m.value));  
   menuPopup.appendChild(mItem);
});
addDestructor(()=> menuPopup.remove() );

// добавить стандартное контекстное меню 
menuPopup.appendChild(document.createElement("menuseparator"));
menuPopup.appendChild(document.createElement("menu")).setAttribute("label", "Меню кнопки");
var clone = menuPopup.lastChild.appendChild(document.getElementById("custombuttons-contextpopup").cloneNode(true));
clone.setAttribute("onpopupshowing", "document.popupNode = document.getElementById('" + _id + "')");



// Функция открывает настройки прокси в окне ...................
function openConnections() {
   for ( var win, nm = Services.wm.getEnumerator(null); win = nm.getNext(); ) 
         if ( win.name == 'Proxy') {
              win.focus();  
              break;
              }
   var win = openDialog("chrome://browser/content/preferences/connection.xul", "Proxy", "centerscreen");

   // добавить атрибут "prefwindow"
   win.addEventListener("load", function f(e) {
       this.removeEventListener("load", f, true); 
       e.target.documentElement.setAttribute("type", "prefwindow");
   }, true );
   
   // закрыть настройки прокси по клику на странице 
   gBrowser.addEventListener("click", function c() {
      this.removeEventListener("click", c );
      try { win.close() } catch(e) {}; 
   }, true );
};



// Функция открывает настройки прокси в вкладке ...................
function openConnectionsInTab() { 
   var connections = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("chrome://browser/content/preferences/connection.xul") ); 
          
   // oбработчик ждет пока откроется прокси, удаляет себя и добавляет атрибут
   connections.addEventListener("pageshow", function c(e) {         
      this.removeEventListener(e.type, c);         
      e.originalTarget.documentElement.setAttribute("type", "prefwindow");
   })   
};



// Установливать нужную иконку кнопки при старте баузера или при изменениях в 'about:config' ...................
var s = "network.proxy.type";
function toggleImage() {
   var icon = self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon");
   switch( cbu.getPrefs(s) ) {
      case 0: icon.src = self.image; break;          
      case 1: icon.src = 'data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAA4GQAAnFmkAHQ5fAAQAKAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAQBJBFQOLQ+nX38ecev/mu6of8gfFvtAyUXewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLUza7PKd//3S7oP2849X9zuvh/mW4mf4XiV7/AB4QZwAAAAAAAAAAAQEBAQAAAAAZGhgTKSwnLyYqJDErKCUnID8vXgaAUP9BlnH8b7ea/ojHrv+q2sf/a7CT+zGWbf8PakXGAAIAAAEBAQMHBwcbAAAAD2BiXn76/ff/4ebg/Onm4f+DtZ7/A31L/j2Wb/+Fwaj/ls23/7rh0v9+vaT+M5du/xKGWO0DIxIdAAAAAAEBAQEAAAABBgYFEaSmorbP08z239vX/4OwnP4ail3/RJlz/5HHsP/T7+X/ms64/3K2mP40k2r/D3tM7AUiExwhIx8meXt1mXt+eKJ3eXSce353n6esouDMysf/o7eq/kOdeP92uZv/vuPT/9Hs4P/C4tT/eLWa+juWbv8bcEq7AAYBAF1gWn7//////f39/P//////////////////////////lcKx/3i9pf/K7OD/2O/l/7ndzf6Fw6n/VK+I/AsxHj8AAAAAXF5bf+Ln2P+AnU/4fZ1N+4WiV/yKp13+jKlh/5CsZf+GpFj/Zpxh/4C5nf+i0L7+k8ex/1udf+UTOCZFAAAAAAEBAQJfYF5/3uXR/16IIPxciiH/Z5Iv/26YOP9ymz3/cpw+/3OcPf9wlzb/YI80/1mKNPu707X/YmZjiAAAAAAEBAQGAAAAAF9gXoDg5tT/cJU6/HGaPf9/pE3/hqtX/4uvXf+NsF7/iKxZ/4KoU/9+o0r/cpY6+9zjyf9ubm2JAAAAAAMEAwQAAAAAX2BegODm1P94nEX8e6JJ/4quXP+Vt2n/nb1z/6LBef+jwXz/ob96/527d/+NrGP71+HG/2praogAAAAABAQDBAAAAABfYF2A4ObU/4WlVvyPsmP/osB7/7HMj/+81J3/wdik/8DXo/+60pz/tc6X/6G6ffvY4sf/amtqiAAAAAAEBAMEAAAAAF9gXn/e5dL/n7l7/LLMk//B16X/zuG2/9jpwv/b68b/2enE/9Pkvv/Q4bv/uMud+9jhyP9qa2mHAAAAAAQEAwQAAAAAX2Bef97k0v+gt335sceT/LrNnfzC1Kj8ydmx/MzatfzK2bP8xtav/MbVr/ywwpL41+HH/2tsaokAAAAABAQDBAAAAABZW1Z3+fz1/+Dm1Pzj6db/5u3b/+nv3v/r8eD/6vDe/+ft2//k69j/4efT/9ngzPv7//b/ZGdhfwAAAAADBAMEAAAAABcZFRpZW1Z6YGFfgWBiYIBhYmGAYmJhgGJjYoBiY2KAYmJhgGFiYYBgYWCAX2BegF1fWoAbHRkeAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA='; break;
      case 2: icon.src = 'data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAAcHQAAYGGkAEBBfAAEBKAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABAQEAAgICAAICAgACAgMBAQEAAAEBJAA6OrQAf3/8ALCw/gCiov8AXl7tABkZewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMAOTm7AIOD/wCjo/0A1tb9AOHh/gCcnP4AY2P/ABISZwAAAAAAAAAAAAEBAQAAAAAAGBgTACgoLwAmJjEAJiYnADIyXgBWVv8Adnb8AJ2d/gCxsf8Aycn/AJeX+wBycv8ASkrGAAACAAABAQMABwcbAAAADwBfX34A+fn/AOHh/ADj4/8AoaH/AFJS/gB1df8Aq6v/ALm5/wDT0/8Ap6f+AHNz/wBeXu0AFRUdAAAAAAABAQEAAAABAAUFEQCjo7YAzs72ANnZ/wCfn/4AY2P/AHl5/wCzs/8A5ub/ALu7/wCcnP4AcHD/AFNT7AAVFRwAICAmAHd3mQB6eqIAdXWcAHl5nwClpeAAyMj/AK2t/gB9ff8An5//ANXV/wDh4f8A1tb/AJ6e+gB0dP8AUFC7AAEGAABcXH4A////AP39/AD///8A////AP///wD///8A////ALOz/wCnp/8A4eH/AObm/wDPz/4ArKz/AI2N/AAhIT8AAAAAAFxcfwDd3f8Aa2v4AGpq+wBycvwAeHj+AHt7/wB/f/8Ac3P/AHNz/wCiov8AwMD+ALS0/wCEhOUAKSlFAAAAAAABAQIAXl5/ANjY/wBGRvwARkb/AFJS/wBaWv8AX1//AF9f/wBfX/8AWVn/AFRU/wBRUfsAvr7/AGNjiAAAAAAABAQGAAAAAABeXoAA2tr/AFtb/ABeXv8AbGz/AHV1/wB6ev8Ae3v/AHd3/wBxcf8Aamr/AFtb+wDS0v8AbW2JAAAAAAADAwQAAAAAAF5egADa2v8AZGT8AGlp/wB5ef8AhYX/AI2N/wCTk/8AlJT/AJKS/wCPj/8AfX37AM/P/wBqaogAAAAAAAMDBAAAAAAAXl6AANra/wBycvwAf3//AJOT/wClpf8AsLD/ALa2/wC1tf8Ar6//AKqq/wCTk/sA0ND/AGpqiAAAAAAAAwMEAAAAAABeXn8A2dn/AJGR/ACnp/8At7f/AMXF/wDQ0P8A09P/ANHR/wDLy/8AyMj/AK2t+wDR0f8AaWmHAAAAAAADAwQAAAAAAF5efwDY2P8AkpL5AKWl/ACurvwAuLj8AL+//ADCwvwAwMD8AL29/AC8vPwAo6P4ANDQ/wBqaokAAAAAAAMDBAAAAAAAV1d3APf3/wDa2vwA3d3/AOHh/wDk5P8A5ub/AOTk/wDh4f8A39//ANra/wDT0/sA+fn/AGNjfwAAAAAAAwMEAAAAAAAWFhoAV1d6AF9fgQBgYIAAYWGAAGFhgABiYoAAYmKAAGFhgABhYYAAYGCAAF5egABbW4AAGhoeAAAAAAABAQEAAAAA/oOAQeEAgEH6AIBBoACAQQAAAEGAAABBAACAQQAAgEEAAQBBAAKAQQACgEEAAoBBAAKAQQACgEEAAoBBAAKAQQACgEE='; break;
      default:icon.src = self.image; 
   }
};  
toggleImage();
gPrefService.addObserver(s, toggleImage, false);
addDestructor(()=> gPrefService.removeObserver(s, toggleImage) );



// Переключать на режим 'Без прокси' при закрытии браузера если это разрешено в 'about:config' ...................
var switchOffProxy = {
    observe: function(subject, topic, data) {
       if ( data == "shutdown" && cbu.getPrefs("CB.Proxy.reset") ) cbu.setPrefs("network.proxy.type", 0);  
    }
};
Services.obs.addObserver(switchOffProxy, "quit-application", false);



// Создаем меню для добавление прокси в контекстном меню выделенного текста на странице ...................
((contextMenu)=> {

  // создать новый пункт меню
  var menuitem = contextMenu.appendChild( document.createElement("menuitem") );      
  menuitem.setAttribute("label", "Добавить прокси"); 
  menuitem.setAttribute("class", "menuitem-iconic");
  menuitem.setAttribute("image", self.image);
  menuitem.onclick =()=> addNewProxy();
  addDestructor(()=> menuitem.remove() );
  
  // устанавливаем где показывать пункт меню 
  addEventListener("popupshowing", ()=>{
     menuitem.hidden = !cbu.getPrefs("CB.Proxy.inContextMenu") || !gContextMenu.isContentSelected; // !gContextMenu.isTextSelected;
  }, false, contextMenu);
  
  
  // добавление прокси
  function addNewProxy(sel) {  
     var selection = document.commandDispatcher.focusedWindow.getSelection().toString();
     var sel = ( sel == undefined ) ? selection : sel.toString();
     sel = sel.replace(/^\s+|\s+$/g, ""); // удалить пробелы, слева и справа от строки
     sel = sel.replace(/\s+/g,":"); // заменить пробелы внутри строки

     // если только порт ...
     if ( sel.length < 6 && isFinite(sel) ) { 
          sel = sel.replace(/:/g, "");
          var lab = 'порт';
          cbu.setPrefs("network.proxy.http_port", +sel);                    
          }
     
     // если только адрес ...
     if ( sel.length > 5 && !/:/.test(sel) && sel.split(".").length == 4 ) {   
          var lab = 'адрес';
          cbu.setPrefs("network.proxy.http", convertFromUnicode("UTF-8", sel));  
          }   
     
     // если адрес и порт ...    
     if ( sel.length > 5 && /:/.test(sel) && sel.split(":").length == 2 && sel.split(".").length == 4 ) {
          var lab = 'адрес и порт';
          var array = sel.split(":");  
          array.forEach((str)=> addNewProxy(str) );          
          }     

     if ( lab == undefined ) return;

     // всплывающая подсказка рядом с выделенным текстом ...     
     function showTooltip() {
        var tooltip = gBrowser.appendChild( document.createElement("tooltip") );
        tooltip.style.cssText = "color: red !important; font-weight: bold !important; font-size: 14px !important; -moz-box-orient: horizontal; text-align: center;";
   
        var image = tooltip.appendChild( document.createElement("image") );
        image.setAttribute("src", self.image);
   
        var label = tooltip.appendChild( document.createElement("label"));
        label.setAttribute("value", "Установлен " + lab + " прокси: " + sel);
    
        var focused = document.commandDispatcher.focusedWindow;
        var selection = focused.getSelection().getRangeAt(0).getBoundingClientRect();
        var posX = focused.mozInnerScreenX + selection.left;
        var posY = focused.mozInnerScreenY + selection.bottom - 5;   

        tooltip.showPopup(gBrowser, posX, posY);
        setTimeout(()=> gBrowser.removeChild(tooltip), 3000);
     };
     showTooltip();    
  };
   
})(document.getElementById("contentAreaContextMenu"));

Ultima2m пишет
bunda1 пишет

А как ты включаешь режим "url авт. настройки"?

Там последовательный перебор - 3 положения.

Вроде так работает:

Выделить код

Код:

// Proxy, от 21.08.2016.


// Настройка функций кликов мыши для кнопки ...................
this.onmousedown =e=> {
   
   this.onmouseup =e=>{                  // левый клик
        if ( e.button ) return;
        clearTimeout(self.timer);           

        switch( cbu.getPrefs("network.proxy.type") ) {
           case 0:  var data = 1; break;            
           case 1:  var data = 2; break; 
           case 2:  var data = 0; break;
           default: var data = 0; 
        }
        cbu.setPrefs("network.proxy.type", data);  
   }

   if ( e.button == 0 )                  // длинный левый клик
        self.timer = setTimeout(()=>{     
           self.onmouseup = '';
           cbu.getPrefs("CB.Proxy.connectionsInTab") ? openConnectionsInTab() : openConnections();
        }, 500);
   
   if ( e.button == 2 )                  // правый клик
        menuPopup.showPopup(self, -1, -1, "popup", "bottomleft", "topleft");
};
self.onclick =e=> e.preventDefault();



// Подсказка для кнопки ...................
this.onmouseover =()=> {
   this.tooltipText = "Proxy \nЛ: Переключить прокси \nДЛ: Открыть настройки прокси"
                    + "\nП: Mеню кнопки \n\nТекущие настройки прокси: " 
                    + "\nIP: " + Services.prefs.getComplexValue("network.proxy.http", Ci.nsISupportsString).data
                    + "\nПорт: "+ cbu.getPrefs("network.proxy.http_port");                                                    
};



// Создать меню для кнопки ...................
var array = [
   { label: "Добавление прокси в контекстом меню", value: 'CB.Proxy.inContextMenu' },
   { label: "Открывать настройки прокси как вкладку", value: 'CB.Proxy.connectionsInTab' },
   { label: "Переключать на режим 'Без прокси' при закрытии браузера ", value: 'CB.Proxy.reset' }    
];

var menuPopup = document.getElementById('mainPopupSet').appendChild(document.createElement("menupopup"));
array.forEach((m)=> {
   var mItem = document.createElement("menuitem");
   mItem.setAttribute("label", m.label);
   mItem.setAttribute('type', 'checkbox');
   mItem.setAttribute('checked', cbu.getPrefs(m.value) );
   mItem.onclick =()=> cbu.setPrefs(m.value, !cbu.getPrefs(m.value));  
   menuPopup.appendChild(mItem);
});
addDestructor(()=> menuPopup.remove() );

// добавить стандартное контекстное меню 
menuPopup.appendChild(document.createElement("menuseparator"));
menuPopup.appendChild(document.createElement("menu")).setAttribute("label", "Меню кнопки");
var clone = menuPopup.lastChild.appendChild(document.getElementById("custombuttons-contextpopup").cloneNode(true));
clone.setAttribute("onpopupshowing", "document.popupNode = document.getElementById('" + _id + "')");



// Функция открывает настройки прокси в окне ...................  
function openConnections() {
   self.win && self.win.close();
   self.win = openDialog("chrome://browser/content/preferences/connection.xul", "Proxy", "centerscreen");
   
   // добавить атрибут "prefwindow"
   self.win.addEventListener("load", function f(e) {
       this.removeEventListener("load", f, true); 
       e.target.documentElement.setAttribute("type", "prefwindow");
   }, true);

   // закрыть настройки прокси по клику на странице 
   gBrowser.addEventListener("click", function c() {
      this.removeEventListener("click", c);
      try { self.win.close() } catch(e) {}; 
   }, true);
};



// Функция открывает настройки прокси в вкладке ...................
function openConnectionsInTab() { 
   var connections = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("chrome://browser/content/preferences/connection.xul") ); 
          
   // oбработчик ждет пока откроется прокси, удаляет себя и добавляет атрибут
   connections.addEventListener("pageshow", function c(e) {         
      this.removeEventListener(e.type, c);         
      e.originalTarget.documentElement.setAttribute("type", "prefwindow");
   })   
};



// Установливать нужную иконку кнопки при старте баузера или при изменениях в 'about:config' ...................
var s = "network.proxy.type";
function toggleImage() {
   var icon = self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon");
   switch( cbu.getPrefs(s) ) {
      case 0: icon.src = self.image; break;          
      case 1: icon.src = 'data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAA4GQAAnFmkAHQ5fAAQAKAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAQBJBFQOLQ+nX38ecev/mu6of8gfFvtAyUXewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLUza7PKd//3S7oP2849X9zuvh/mW4mf4XiV7/AB4QZwAAAAAAAAAAAQEBAQAAAAAZGhgTKSwnLyYqJDErKCUnID8vXgaAUP9BlnH8b7ea/ojHrv+q2sf/a7CT+zGWbf8PakXGAAIAAAEBAQMHBwcbAAAAD2BiXn76/ff/4ebg/Onm4f+DtZ7/A31L/j2Wb/+Fwaj/ls23/7rh0v9+vaT+M5du/xKGWO0DIxIdAAAAAAEBAQEAAAABBgYFEaSmorbP08z239vX/4OwnP4ail3/RJlz/5HHsP/T7+X/ms64/3K2mP40k2r/D3tM7AUiExwhIx8meXt1mXt+eKJ3eXSce353n6esouDMysf/o7eq/kOdeP92uZv/vuPT/9Hs4P/C4tT/eLWa+juWbv8bcEq7AAYBAF1gWn7//////f39/P//////////////////////////lcKx/3i9pf/K7OD/2O/l/7ndzf6Fw6n/VK+I/AsxHj8AAAAAXF5bf+Ln2P+AnU/4fZ1N+4WiV/yKp13+jKlh/5CsZf+GpFj/Zpxh/4C5nf+i0L7+k8ex/1udf+UTOCZFAAAAAAEBAQJfYF5/3uXR/16IIPxciiH/Z5Iv/26YOP9ymz3/cpw+/3OcPf9wlzb/YI80/1mKNPu707X/YmZjiAAAAAAEBAQGAAAAAF9gXoDg5tT/cJU6/HGaPf9/pE3/hqtX/4uvXf+NsF7/iKxZ/4KoU/9+o0r/cpY6+9zjyf9ubm2JAAAAAAMEAwQAAAAAX2BegODm1P94nEX8e6JJ/4quXP+Vt2n/nb1z/6LBef+jwXz/ob96/527d/+NrGP71+HG/2praogAAAAABAQDBAAAAABfYF2A4ObU/4WlVvyPsmP/osB7/7HMj/+81J3/wdik/8DXo/+60pz/tc6X/6G6ffvY4sf/amtqiAAAAAAEBAMEAAAAAF9gXn/e5dL/n7l7/LLMk//B16X/zuG2/9jpwv/b68b/2enE/9Pkvv/Q4bv/uMud+9jhyP9qa2mHAAAAAAQEAwQAAAAAX2Bef97k0v+gt335sceT/LrNnfzC1Kj8ydmx/MzatfzK2bP8xtav/MbVr/ywwpL41+HH/2tsaokAAAAABAQDBAAAAABZW1Z3+fz1/+Dm1Pzj6db/5u3b/+nv3v/r8eD/6vDe/+ft2//k69j/4efT/9ngzPv7//b/ZGdhfwAAAAADBAMEAAAAABcZFRpZW1Z6YGFfgWBiYIBhYmGAYmJhgGJjYoBiY2KAYmJhgGFiYYBgYWCAX2BegF1fWoAbHRkeAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA='; break;
      case 2: icon.src = 'data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAAcHQAAYGGkAEBBfAAEBKAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABAQEAAgICAAICAgACAgMBAQEAAAEBJAA6OrQAf3/8ALCw/gCiov8AXl7tABkZewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMAOTm7AIOD/wCjo/0A1tb9AOHh/gCcnP4AY2P/ABISZwAAAAAAAAAAAAEBAQAAAAAAGBgTACgoLwAmJjEAJiYnADIyXgBWVv8Adnb8AJ2d/gCxsf8Aycn/AJeX+wBycv8ASkrGAAACAAABAQMABwcbAAAADwBfX34A+fn/AOHh/ADj4/8AoaH/AFJS/gB1df8Aq6v/ALm5/wDT0/8Ap6f+AHNz/wBeXu0AFRUdAAAAAAABAQEAAAABAAUFEQCjo7YAzs72ANnZ/wCfn/4AY2P/AHl5/wCzs/8A5ub/ALu7/wCcnP4AcHD/AFNT7AAVFRwAICAmAHd3mQB6eqIAdXWcAHl5nwClpeAAyMj/AK2t/gB9ff8An5//ANXV/wDh4f8A1tb/AJ6e+gB0dP8AUFC7AAEGAABcXH4A////AP39/AD///8A////AP///wD///8A////ALOz/wCnp/8A4eH/AObm/wDPz/4ArKz/AI2N/AAhIT8AAAAAAFxcfwDd3f8Aa2v4AGpq+wBycvwAeHj+AHt7/wB/f/8Ac3P/AHNz/wCiov8AwMD+ALS0/wCEhOUAKSlFAAAAAAABAQIAXl5/ANjY/wBGRvwARkb/AFJS/wBaWv8AX1//AF9f/wBfX/8AWVn/AFRU/wBRUfsAvr7/AGNjiAAAAAAABAQGAAAAAABeXoAA2tr/AFtb/ABeXv8AbGz/AHV1/wB6ev8Ae3v/AHd3/wBxcf8Aamr/AFtb+wDS0v8AbW2JAAAAAAADAwQAAAAAAF5egADa2v8AZGT8AGlp/wB5ef8AhYX/AI2N/wCTk/8AlJT/AJKS/wCPj/8AfX37AM/P/wBqaogAAAAAAAMDBAAAAAAAXl6AANra/wBycvwAf3//AJOT/wClpf8AsLD/ALa2/wC1tf8Ar6//AKqq/wCTk/sA0ND/AGpqiAAAAAAAAwMEAAAAAABeXn8A2dn/AJGR/ACnp/8At7f/AMXF/wDQ0P8A09P/ANHR/wDLy/8AyMj/AK2t+wDR0f8AaWmHAAAAAAADAwQAAAAAAF5efwDY2P8AkpL5AKWl/ACurvwAuLj8AL+//ADCwvwAwMD8AL29/AC8vPwAo6P4ANDQ/wBqaokAAAAAAAMDBAAAAAAAV1d3APf3/wDa2vwA3d3/AOHh/wDk5P8A5ub/AOTk/wDh4f8A39//ANra/wDT0/sA+fn/AGNjfwAAAAAAAwMEAAAAAAAWFhoAV1d6AF9fgQBgYIAAYWGAAGFhgABiYoAAYmKAAGFhgABhYYAAYGCAAF5egABbW4AAGhoeAAAAAAABAQEAAAAA/oOAQeEAgEH6AIBBoACAQQAAAEGAAABBAACAQQAAgEEAAQBBAAKAQQACgEEAAoBBAAKAQQACgEEAAoBBAAKAQQACgEE='; break;
      default:icon.src = self.image; 
   }
};  
toggleImage();
gPrefService.addObserver(s, toggleImage, false);
addDestructor(()=> gPrefService.removeObserver(s, toggleImage) );



// Переключать на режим 'Без прокси' при закрытии браузера если это разрешено в 'about:config' ...................
var switchOffProxy = {
    observe: function(subject, topic, data) {
       if ( data == "shutdown" && cbu.getPrefs("CB.Proxy.reset") ) cbu.setPrefs("network.proxy.type", 0);  
    }
};
Services.obs.addObserver(switchOffProxy, "quit-application", false);



// Создаем меню для добавление прокси в контекстном меню выделенного текста на странице ...................
((contextMenu)=> {

  // создать новый пункт меню
  var menuitem = document.createElement("menuitem");      
  menuitem.setAttribute("label", "Добавить прокси"); 
  menuitem.setAttribute("class", "menuitem-iconic");
  menuitem.setAttribute("image", self.image);
  menuitem.onclick =()=> addNewProxy();
  contextMenu.appendChild(menuitem); // как последний пункт меню
  addDestructor(()=> menuitem.remove() );
  
  // устанавливаем где показывать пункт меню 
  addEventListener("popupshowing", ()=>{
     menuitem.hidden = !cbu.getPrefs("CB.Proxy.inContextMenu") || !gContextMenu.isContentSelected; // !gContextMenu.isTextSelected;
  }, false, contextMenu);
  
  
  // добавление прокси
  function addNewProxy(sel) {  
     var selection = gBrowser.contentDocument.defaultView.getSelection().toString();
     var sel = ( sel == undefined ) ? selection : sel.toString();
     sel = sel.replace(/^\s+|\s+$/g, ""); // удалить пробелы, слева и справа от строки
     sel = sel.replace(/\s+/g,":"); // заменить пробелы внутри строки

     // если только порт ...
     if ( sel.length < 6 && isFinite(sel) ) { 
          sel = sel.replace(/:/g, "");
          var lab = 'порт';
          cbu.setPrefs("network.proxy.http_port", +sel);                    
          }
     
     // если только адрес ...
     if ( sel.length > 5 && !/:/.test(sel) && sel.split(".").length == 4 ) {   
          var lab = 'адрес';
          cbu.setPrefs("network.proxy.http", convertFromUnicode("UTF-8", sel));  
          }   
     
     // если адрес и порт ...    
     if ( sel.length > 5 && /:/.test(sel) && sel.split(":").length == 2 && sel.split(".").length == 4 ) {
          var lab = 'адрес и порт';
          var array = sel.split(":");  
          array.forEach((str)=> addNewProxy(str) );          
          }     

     if ( lab == undefined ) return;

     // всплывающая подсказка рядом с выделенным текстом ...     
     function showTooltip() {
        var tooltip = gBrowser.appendChild( document.createElement("tooltip") );
        tooltip.style.cssText = "color: red !important; font-weight: bold !important; font-size: 14px !important; -moz-box-orient: horizontal; text-align: center;";
   
        var image = tooltip.appendChild( document.createElement("image") );
        image.setAttribute("src", self.image);
   
        var label = tooltip.appendChild( document.createElement("label"));
        label.setAttribute("value", "Установлен " + lab + " прокси: " + sel);

        var focused = document.commandDispatcher.focusedWindow;
        var selection = focused.content.document.getSelection().getRangeAt(0).getBoundingClientRect();
        var posX = focused.mozInnerScreenX + selection.left;
        var posY = focused.mozInnerScreenY + selection.bottom - 5;   

        tooltip.showPopup(gBrowser, posX, posY);
        setTimeout(()=> gBrowser.removeChild(tooltip), 3000);
     };
     showTooltip();    
  };
   
})(document.getElementById("contentAreaContextMenu"));

Здравствуйте!
А разве ссылка на .pac - файл должна добавляться в "Ручную настройку сервиса прокси"? Не в "URL автоматической настройки сервиса прокси"?

IAmSelf пишет

разве ссылка на .pac - файл

У меня в "URL автоматической настройки сервиса прокси" записана.
По другому она не будет работать, имхо.

Ultima2m пишет

У меня в "URL автоматической настройки сервиса прокси" записана.По другому она не будет работать, имхо.

Так в том-то и дело. У меня ставится в "Ручную настройку сервиса прокси".
FF 49.0.1

IAmSelf
У меня эта стоит для переключения на автоматической настройки сервиса прокси.

oleg.sgh, Ultima2m
Извините за тупость! Не сразу прочитал на первой странице (перешел на 2-ю из поисковика), что переключение идет циклически: Ручная настройка сервиса прокси / URL автоматической настройки сервиса прокси / Без прокси.
Все переключается отлично последней версией кнопки.

Вот только остался еще пара вопросов: можно как-то сохранить адрес "URL автоматической настройки сервиса прокси"? У меня сейчас после перезапуска FF поле становится девственно чистым (даже при отключенном пункте меню "Переключаться на режим 'Без прокси' при закрытии браузера"). И из этого вытекает второй вопрос: а работает ли этот пункт кнопки?
И во всплывающей подсказке кнопки не отображаются настройки прокси. Все по нулям...

IAmSelf
В моем варианте кнопки только два положения. Без прокси и автоматическое. Всё сохраняется.
Урл
https://antizapret.prostovpn.org/proxy.pac или https://config.anticenz.org/proxy.pac

IAmSelf пишет

Вот только остался еще пара вопросов: можно как-то сохранить адрес "URL автоматической настройки сервиса прокси"? У меня сейчас после перезапуска FF поле становится девственно чистым (даже при отключенном пункте меню "Переключаться на режим 'Без прокси' при закрытии браузера").

Я проверил и у меня при закрытии браузера в настройках браузера сохраняется адрес "URL автоматической настройки сервиса прокси".

IAmSelf пишет

И во всплывающей подсказке кнопки не отображаются настройки прокси. Все по нулям...

Выделить код

Код:

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%3EProxy%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAAYOQAAWJ2kADh1fAAAEKAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAEEJBE4ULQ+fZ38ea/H/muhuv8gW3ztAxclewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLNlO7PH+n/3Sgu/281eP9zuHr/mWZuP4XXon/ABAeZwAAAAAAAAAAAQEBAQAAAAAZGBoTKScsLyYkKjErJSgnIC8/XgZQgP9BcZb8b5q3/oiux/+qx9r/a5Ow+zFtlv8PRWrGAAACAAEBAQMHBwcbAAAAD2BeYn769/3/4eDm/Onh5v+DnrX/A0t9/j1vlv+FqMH/lrfN/7rS4f9+pL3+M26X/xJYhu0DEiMdAAAAAAEBAQEAAAABBgUGEaSiprbPzNP239fb/4OcsP4aXYr/RHOZ/5Gwx//T5e//mrjO/3KYtv40apP/D0x77AUTIhwhHyMmeXV7mXt4fqJ3dHmce3d+n6eirODMx8r/o6q3/kN4nf92m7n/vtPj/9Hg7P/C1OL/eJq1+jtulv8bSnC7AAEGAF1aYH7//////f39/P//////////////////////////lbHC/3ilvf/K4Oz/2OXv/7nN3f6FqcP/VIiv/AseMT8AAAAAXFtef+LY5/+AT534fU2d+4VXovyKXaf+jGGp/5BlrP+GWKT/ZmGc/4Cduf+ivtD+k7HH/1t/neUTJjhFAAAAAAEBAQJfXmB/3tHl/14giPxcIYr/Zy+S/244mP9yPZv/cj6c/3M9nP9wNpf/YDSP/1k0ivu7tdP/YmNmiAAAAAAEBAQGAAAAAF9eYIDg1Ob/cDqV/HE9mv9/TaT/hler/4tdr/+NXrD/iFms/4JTqP9+SqP/cjqW+9zJ4/9ubW6JAAAAAAMDBAQAAAAAX15ggODU5v94RZz8e0mi/4pcrv+Vabf/nXO9/6J5wf+jfMH/oXq//513u/+NY6z718bh/2pqa4gAAAAABAMEBAAAAABfXWCA4NTm/4VWpfyPY7L/onvA/7GPzP+8ndT/waTY/8Cj1/+6nNL/tZfO/6F9uvvYx+L/ampriAAAAAAEAwQEAAAAAF9eYH/e0uX/n3u5/LKTzP/Bpdf/zrbh/9jC6f/bxuv/2cTp/9O+5P/Qu+H/uJ3L+9jI4f9qaWuHAAAAAAQDBAQAAAAAX15gf97S5P+gfbf5sZPH/LqdzfzCqNT8ybHZ/My12vzKs9n8xq/W/Mav1fywksL418fh/2tqbIkAAAAABAMEBAAAAABZVlt3+fX8/+DU5vzj1un/5tvt/+ne7//r4PH/6t7w/+fb7f/k2Ov/4dPn/9nM4Pv79v//ZGFnfwAAAAADAwQEAAAAABcVGRpZVlt6YF9hgWBgYoBhYWKAYmFigGJiY4BiYmOAYmFigGFhYoBgYGGAX15ggF1aX4AbGR0eAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20Proxy%2C%20%u043E%u0442%2008.10.2016.%0A%0A%0A//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Athis.onmousedown%20%3De%3D%3E%20%7B%0A%20%20%20%0A%20%20%20this.onmouseup%20%3De%3D%3E%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u043B%u0435%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%0A%20%20%20%20%20%20%20%20if%20%28%20e.button%20%29%20return%3B%0A%20%20%20%20%20%20%20%20clearTimeout%28self.timer%29%3B%20%20%20%20%20%20%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20switch%28%20cbu.getPrefs%28%22network.proxy.type%22%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20case%200%3A%20%20var%20data%20%3D%201%3B%20break%3B%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20case%201%3A%20%20var%20data%20%3D%202%3B%20break%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20case%202%3A%20%20var%20data%20%3D%200%3B%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20default%3A%20var%20data%20%3D%200%3B%20%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.type%22%2C%20data%29%3B%20%20%0A%20%20%20%7D%0A%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u0434%u043B%u0438%u043D%u043D%u044B%u0439%20%u043B%u0435%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%0A%20%20%20%20%20%20%20%20self.timer%20%3D%20setTimeout%28%28%29%3D%3E%7B%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20self.onmouseup%20%3D%20%27%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20cbu.getPrefs%28%22CB.Proxy.connectionsInTab%22%29%20%3F%20openConnectionsInTab%28%29%20%3A%20openConnections%28%29%3B%0A%20%20%20%20%20%20%20%20%7D%2C%20500%29%3B%0A%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%20%29%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u043F%u0440%u0430%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%0A%20%20%20%20%20%20%20%20menuPopup.showPopup%28self%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%7D%3B%0Aself.onclick%20%3De%3D%3E%20e.preventDefault%28%29%3B%0A%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Athis.onmouseover%20%3D%28%29%3D%3E%20%7B%0A%20%20%20switch%28%20cbu.getPrefs%28%22network.proxy.type%22%29%20%29%20%7B%0A%20%20%20%20%20%20case%200%3A%20%20var%20str%20%3D%20%22%5Cn%u25CF%20%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%5Cn%20%20%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%5Cn%20%20%u0421%u0438%u0441%u0442%u0435%u043C%u043D%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%5Cn%20%20%u0420%u0443%u0447%u043D%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%5Cn%20%20%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0430%u044F%20%u0447%u0435%u0440%u0435%u0437%20URL%22%3B%20break%3B%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20case%204%3A%20%20var%20str%20%3D%20%22%5Cn%20%20%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%5Cn%u25CF%20%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%5Cn%20%20%u0421%u0438%u0441%u0442%u0435%u043C%u043D%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%5Cn%20%20%u0420%u0443%u0447%u043D%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%5Cn%20%20%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0430%u044F%20%u0447%u0435%u0440%u0435%u0437%20URL%22%3B%20break%3B%20%0A%20%20%20%20%20%20case%205%3A%20%20var%20str%20%3D%20%22%5Cn%20%20%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%5Cn%20%20%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%5Cn%u25CF%20%u0421%u0438%u0441%u0442%u0435%u043C%u043D%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%5Cn%20%20%u0420%u0443%u0447%u043D%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%5Cn%20%20%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0430%u044F%20%u0447%u0435%u0440%u0435%u0437%20URL%22%3B%20break%3B%0A%20%20%20%20%20%20case%201%3A%20%20var%20str%20%3D%20%22%5Cn%20%20%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%5Cn%20%20%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%5Cn%20%20%u0421%u0438%u0441%u0442%u0435%u043C%u043D%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%5Cn%u25CF%20%u0420%u0443%u0447%u043D%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%5Cn%20%20%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0430%u044F%20%u0447%u0435%u0440%u0435%u0437%20URL%22%3B%20break%3B%0A%20%20%20%20%20%20case%202%3A%20%20var%20str%20%3D%20%22%5Cn%20%20%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%5Cn%20%20%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%5Cn%20%20%u0421%u0438%u0441%u0442%u0435%u043C%u043D%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%5Cn%20%20%u0420%u0443%u0447%u043D%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%5Cn%u25CF%20%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0430%u044F%20%u0447%u0435%u0440%u0435%u0437%20URL%22%3B%20%0A%20%20%20%7D%0A%20%20%20%0A%20%20%20this.tooltipText%20%3D%20%22Proxy%22%20%0A%20%20%20%20%20%20+%20str%0A%20%20%20%20%20%20+%20%22%5Cn%5Cn%u041B%3A%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0440%u0435%u0436%u0438%u043C%20%u043F%u0440%u043E%u043A%u0441%u0438%20%5Cn%u0414%u041B%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%22%0A%20%20%20%20%20%20+%20%22%5Cn%u041F%3A%20M%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%20%5Cn%5Cn%u0422%u0435%u043A%u0443%u0449%u0438%u0435%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%3A%22%20%0A%20%20%20%20%20%20+%20%22%5CnIP%3A%20%22%20+%20Services.prefs.getComplexValue%28%22network.proxy.http%22%2C%20Ci.nsISupportsString%29.data%0A%20%20%20%20%20%20+%20%22%5Cn%u041F%u043E%u0440%u0442%3A%20%22%20+%20cbu.getPrefs%28%22network.proxy.http_port%22%29%0A%20%20%20%20%20%20+%20%22%5CnURL%3A%20%22%20+%20Services.prefs.getComplexValue%28%22network.proxy.autoconfig_url%22%2C%20Ci.nsISupportsString%29.data%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%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%7D%3B%0A%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Avar%20array%20%3D%20%5B%0A%20%20%20%7B%20label%3A%20%22%u0414%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043E%u043C%20%u043C%u0435%u043D%u044E%22%2C%20value%3A%20%27CB.Proxy.inContextMenu%27%20%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u041E%u0442%u043A%u0440%u044B%u0432%u0430%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u043A%u0430%u043A%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%22%2C%20value%3A%20%27CB.Proxy.connectionsInTab%27%20%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u043D%u0430%20%u0440%u0435%u0436%u0438%u043C%20%27%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%27%20%u043F%u0440%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0438%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%22%2C%20value%3A%20%27CB.Proxy.reset%27%20%7D%20%20%20%20%0A%5D%3B%0A%0Avar%20menuPopup%20%3D%20document.getElementById%28%27mainPopupSet%27%29.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0Aarray.forEach%28%28m%29%3D%3E%20%7B%0A%20%20%20var%20mItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20mItem.setAttribute%28%22label%22%2C%20m.label%29%3B%0A%20%20%20mItem.setAttribute%28%27type%27%2C%20%27checkbox%27%29%3B%0A%20%20%20mItem.setAttribute%28%27checked%27%2C%20cbu.getPrefs%28m.value%29%20%29%3B%0A%20%20%20mItem.onclick%20%3D%28%29%3D%3E%20cbu.setPrefs%28m.value%2C%20%21cbu.getPrefs%28m.value%29%29%3B%20%20%0A%20%20%20menuPopup.appendChild%28mItem%29%3B%0A%7D%29%3B%0AaddDestructor%28%28%29%3D%3E%20menuPopup.remove%28%29%20%29%3B%0A%0A//%20%u0434%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0441%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u043E%u0435%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%0AmenuPopup.appendChild%28document.createElement%28%22menuseparator%22%29%29%3B%0AmenuPopup.appendChild%28document.createElement%28%22menu%22%29%29.setAttribute%28%22label%22%2C%20%22%u041C%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%22%29%3B%0Avar%20clone%20%3D%20menuPopup.lastChild.appendChild%28document.getElementById%28%22custombuttons-contextpopup%22%29.cloneNode%28true%29%29%3B%0A//clone.setAttribute%28%22onpopupshowing%22%2C%20%22document.popupNode%20%3D%20document.getElementById%28%27%22%20+%20_id%20+%20%22%27%29%22%29%3B.trim%28%29%0Aclone.setAttribute%28%22onpopupshowing%22%2C%20%22document.popupNode%20%3D%20document.getElementById%28_id.trim%28%29%29%22%29%3B%0A%0A%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043E%u043A%u043D%u0435%20...................%20%20%0Afunction%20openConnections%28%29%20%7B%0A%20%20%20self.win%20%26%26%20self.win.close%28%29%3B%0A%20%20%20self.win%20%3D%20openDialog%28%22chrome%3A//browser/content/preferences/connection.xul%22%2C%20%22Proxy%22%2C%20%22centerscreen%22%29%3B%0A%20%20%20%0A%20%20%20//%20%u0434%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%20%22prefwindow%22%0A%20%20%20self.win.addEventListener%28%22load%22%2C%20function%20f%28e%29%20%7B%0A%20%20%20%20%20%20%20this.removeEventListener%28%22load%22%2C%20f%2C%20true%29%3B%20%0A%20%20%20%20%20%20%20e.target.documentElement.setAttribute%28%22type%22%2C%20%22prefwindow%22%29%3B%0A%20%20%20%7D%2C%20true%29%3B%0A%0A%20%20%20//%20%u0437%u0430%u043A%u0440%u044B%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u043F%u043E%20%u043A%u043B%u0438%u043A%u0443%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%0A%20%20%20gBrowser.addEventListener%28%22click%22%2C%20function%20c%28%29%20%7B%0A%20%20%20%20%20%20this.removeEventListener%28%22click%22%2C%20c%29%3B%0A%20%20%20%20%20%20try%20%7B%20self.win.close%28%29%20%7D%20catch%28e%29%20%7B%7D%3B%20%0A%20%20%20%7D%2C%20true%29%3B%0A%7D%3B%0A%0A%0A%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20...................%0Afunction%20openConnectionsInTab%28%29%20%7B%20%0A%20%20%20var%20connections%20%3D%20gBrowser.getBrowserForTab%28%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28%22chrome%3A//browser/content/preferences/connection.xul%22%29%20%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20//%20o%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%20%u0436%u0434%u0435%u0442%20%u043F%u043E%u043A%u0430%20%u043E%u0442%u043A%u0440%u043E%u0435%u0442%u0441%u044F%20%u043F%u0440%u043E%u043A%u0441%u0438%2C%20%u0443%u0434%u0430%u043B%u044F%u0435%u0442%20%u0441%u0435%u0431%u044F%20%u0438%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%0A%20%20%20connections.addEventListener%28%22pageshow%22%2C%20function%20c%28e%29%20%7B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20this.removeEventListener%28e.type%2C%20c%29%3B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20e.originalTarget.documentElement.setAttribute%28%22type%22%2C%20%22prefwindow%22%29%3B%0A%20%20%20%7D%29%20%20%20%0A%7D%3B%0A%0A%0A%0A//%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0438%u0432%u0430%u0442%u044C%20%u043D%u0443%u0436%u043D%u0443%u044E%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u0440%u0438%20%u0441%u0442%u0430%u0440%u0442%u0435%20%u0431%u0430%u0443%u0437%u0435%u0440%u0430%20%u0438%u043B%u0438%20%u043F%u0440%u0438%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%u0445%20%u0432%20%27about%3Aconfig%27%20...................%0Avar%20s%20%3D%20%22network.proxy.type%22%3B%0Afunction%20toggleImage%28%29%20%7B%0A%20%20%20var%20icon%20%3D%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0A%20%20%20switch%28%20cbu.getPrefs%28s%29%20%29%20%7B%0A%20%20%20%20%20%20case%200%3A%20icon.src%20%3D%20self.image%3B%20break%3B%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20case%201%3A%20icon.src%20%3D%20%27data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAA4GQAAnFmkAHQ5fAAQAKAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAQBJBFQOLQ+nX38ecev/mu6of8gfFvtAyUXewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLUza7PKd//3S7oP2849X9zuvh/mW4mf4XiV7/AB4QZwAAAAAAAAAAAQEBAQAAAAAZGhgTKSwnLyYqJDErKCUnID8vXgaAUP9BlnH8b7ea/ojHrv+q2sf/a7CT+zGWbf8PakXGAAIAAAEBAQMHBwcbAAAAD2BiXn76/ff/4ebg/Onm4f+DtZ7/A31L/j2Wb/+Fwaj/ls23/7rh0v9+vaT+M5du/xKGWO0DIxIdAAAAAAEBAQEAAAABBgYFEaSmorbP08z239vX/4OwnP4ail3/RJlz/5HHsP/T7+X/ms64/3K2mP40k2r/D3tM7AUiExwhIx8meXt1mXt+eKJ3eXSce353n6esouDMysf/o7eq/kOdeP92uZv/vuPT/9Hs4P/C4tT/eLWa+juWbv8bcEq7AAYBAF1gWn7//////f39/P//////////////////////////lcKx/3i9pf/K7OD/2O/l/7ndzf6Fw6n/VK+I/AsxHj8AAAAAXF5bf+Ln2P+AnU/4fZ1N+4WiV/yKp13+jKlh/5CsZf+GpFj/Zpxh/4C5nf+i0L7+k8ex/1udf+UTOCZFAAAAAAEBAQJfYF5/3uXR/16IIPxciiH/Z5Iv/26YOP9ymz3/cpw+/3OcPf9wlzb/YI80/1mKNPu707X/YmZjiAAAAAAEBAQGAAAAAF9gXoDg5tT/cJU6/HGaPf9/pE3/hqtX/4uvXf+NsF7/iKxZ/4KoU/9+o0r/cpY6+9zjyf9ubm2JAAAAAAMEAwQAAAAAX2BegODm1P94nEX8e6JJ/4quXP+Vt2n/nb1z/6LBef+jwXz/ob96/527d/+NrGP71+HG/2praogAAAAABAQDBAAAAABfYF2A4ObU/4WlVvyPsmP/osB7/7HMj/+81J3/wdik/8DXo/+60pz/tc6X/6G6ffvY4sf/amtqiAAAAAAEBAMEAAAAAF9gXn/e5dL/n7l7/LLMk//B16X/zuG2/9jpwv/b68b/2enE/9Pkvv/Q4bv/uMud+9jhyP9qa2mHAAAAAAQEAwQAAAAAX2Bef97k0v+gt335sceT/LrNnfzC1Kj8ydmx/MzatfzK2bP8xtav/MbVr/ywwpL41+HH/2tsaokAAAAABAQDBAAAAABZW1Z3+fz1/+Dm1Pzj6db/5u3b/+nv3v/r8eD/6vDe/+ft2//k69j/4efT/9ngzPv7//b/ZGdhfwAAAAADBAMEAAAAABcZFRpZW1Z6YGFfgWBiYIBhYmGAYmJhgGJjYoBiY2KAYmJhgGFiYYBgYWCAX2BegF1fWoAbHRkeAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%27%3B%20break%3B%0A%20%20%20%20%20%20case%202%3A%20icon.src%20%3D%20%27data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAAcHQAAYGGkAEBBfAAEBKAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABAQEAAgICAAICAgACAgMBAQEAAAEBJAA6OrQAf3/8ALCw/gCiov8AXl7tABkZewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMAOTm7AIOD/wCjo/0A1tb9AOHh/gCcnP4AY2P/ABISZwAAAAAAAAAAAAEBAQAAAAAAGBgTACgoLwAmJjEAJiYnADIyXgBWVv8Adnb8AJ2d/gCxsf8Aycn/AJeX+wBycv8ASkrGAAACAAABAQMABwcbAAAADwBfX34A+fn/AOHh/ADj4/8AoaH/AFJS/gB1df8Aq6v/ALm5/wDT0/8Ap6f+AHNz/wBeXu0AFRUdAAAAAAABAQEAAAABAAUFEQCjo7YAzs72ANnZ/wCfn/4AY2P/AHl5/wCzs/8A5ub/ALu7/wCcnP4AcHD/AFNT7AAVFRwAICAmAHd3mQB6eqIAdXWcAHl5nwClpeAAyMj/AK2t/gB9ff8An5//ANXV/wDh4f8A1tb/AJ6e+gB0dP8AUFC7AAEGAABcXH4A////AP39/AD///8A////AP///wD///8A////ALOz/wCnp/8A4eH/AObm/wDPz/4ArKz/AI2N/AAhIT8AAAAAAFxcfwDd3f8Aa2v4AGpq+wBycvwAeHj+AHt7/wB/f/8Ac3P/AHNz/wCiov8AwMD+ALS0/wCEhOUAKSlFAAAAAAABAQIAXl5/ANjY/wBGRvwARkb/AFJS/wBaWv8AX1//AF9f/wBfX/8AWVn/AFRU/wBRUfsAvr7/AGNjiAAAAAAABAQGAAAAAABeXoAA2tr/AFtb/ABeXv8AbGz/AHV1/wB6ev8Ae3v/AHd3/wBxcf8Aamr/AFtb+wDS0v8AbW2JAAAAAAADAwQAAAAAAF5egADa2v8AZGT8AGlp/wB5ef8AhYX/AI2N/wCTk/8AlJT/AJKS/wCPj/8AfX37AM/P/wBqaogAAAAAAAMDBAAAAAAAXl6AANra/wBycvwAf3//AJOT/wClpf8AsLD/ALa2/wC1tf8Ar6//AKqq/wCTk/sA0ND/AGpqiAAAAAAAAwMEAAAAAABeXn8A2dn/AJGR/ACnp/8At7f/AMXF/wDQ0P8A09P/ANHR/wDLy/8AyMj/AK2t+wDR0f8AaWmHAAAAAAADAwQAAAAAAF5efwDY2P8AkpL5AKWl/ACurvwAuLj8AL+//ADCwvwAwMD8AL29/AC8vPwAo6P4ANDQ/wBqaokAAAAAAAMDBAAAAAAAV1d3APf3/wDa2vwA3d3/AOHh/wDk5P8A5ub/AOTk/wDh4f8A39//ANra/wDT0/sA+fn/AGNjfwAAAAAAAwMEAAAAAAAWFhoAV1d6AF9fgQBgYIAAYWGAAGFhgABiYoAAYmKAAGFhgABhYYAAYGCAAF5egABbW4AAGhoeAAAAAAABAQEAAAAA/oOAQeEAgEH6AIBBoACAQQAAAEGAAABBAACAQQAAgEEAAQBBAAKAQQACgEEAAoBBAAKAQQACgEEAAoBBAAKAQQACgEE%3D%27%3B%20break%3B%0A%20%20%20%20%20%20default%3Aicon.src%20%3D%20self.image%3B%20%0A%20%20%20%7D%0A%7D%3B%20%20%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28%28%29%3D%3E%20gPrefService.removeObserver%28s%2C%20toggleImage%29%20%29%3B%0A%0A%0A%0A//%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u043D%u0430%20%u0440%u0435%u0436%u0438%u043C%20%27%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%27%20%u043F%u0440%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0438%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20...................%0Avar%20switchOffProxy%20%3D%20%7B%0A%20%20%20%20observe%3A%20function%28subject%2C%20topic%2C%20data%29%20%7B%0A%20%20%20%20%20%20%20if%20%28%20data%20%3D%3D%20%22shutdown%22%20%26%26%20cbu.getPrefs%28%22CB.Proxy.reset%22%29%20%29%20cbu.setPrefs%28%22network.proxy.type%22%2C%200%29%3B%20%20%0A%20%20%20%20%7D%0A%7D%3B%0AServices.obs.addObserver%28switchOffProxy%2C%20%22quit-application%22%2C%20false%29%3B%0A%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0435%u043C%20%u043C%u0435%u043D%u044E%20%u0434%u043B%u044F%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u043C%20%u043C%u0435%u043D%u044E%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20...................%0A%28%28contextMenu%29%3D%3E%20%7B%0A%0A%20%20//%20%u0441%u043E%u0437%u0434%u0430%u0442%u044C%20%u043D%u043E%u0432%u044B%u0439%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E%0A%20%20var%20menuitem%20%3D%20document.createElement%28%22menuitem%22%29%3B%20%20%20%20%20%20%0A%20%20menuitem.setAttribute%28%22label%22%2C%20%22%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u043F%u0440%u043E%u043A%u0441%u0438%22%29%3B%20%0A%20%20menuitem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%0A%20%20menuitem.setAttribute%28%22image%22%2C%20self.image%29%3B%0A%20%20menuitem.onclick%20%3D%28%29%3D%3E%20addNewProxy%28%29%3B%0A%20%20contextMenu.appendChild%28menuitem%29%3B%20//%20%u043A%u0430%u043A%20%u043F%u043E%u0441%u043B%u0435%u0434%u043D%u0438%u0439%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E%0A%20%20addDestructor%28%28%29%3D%3E%20menuitem.remove%28%29%20%29%3B%0A%20%20%0A%20%20//%20%u0443%u0441%u0442%u0430%u043D%u0430%u0432%u043B%u0438%u0432%u0430%u0435%u043C%20%u0433%u0434%u0435%20%u043F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E%20%0A%20%20addEventListener%28%22popupshowing%22%2C%20%28%29%3D%3E%7B%0A%20%20%20%20%20menuitem.hidden%20%3D%20%21cbu.getPrefs%28%22CB.Proxy.inContextMenu%22%29%20%7C%7C%20%21gContextMenu.isContentSelected%3B%20//%20%21gContextMenu.isTextSelected%3B%0A%20%20%7D%2C%20false%2C%20contextMenu%29%3B%0A%20%20%0A%20%20%0A%20%20//%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%0A%20%20function%20addNewProxy%28sel%29%20%7B%20%20%0A%20%20%20%20%20var%20selection%20%3D%20gBrowser.contentDocument.defaultView.getSelection%28%29.toString%28%29%3B%0A%20%20%20%20%20var%20sel%20%3D%20%28%20sel%20%3D%3D%20undefined%20%29%20%3F%20selection%20%3A%20sel.toString%28%29%3B%0A%20%20%20%20%20sel%20%3D%20sel.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%20%22%22%29%3B%20//%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%2C%20%u0441%u043B%u0435%u0432%u0430%20%u0438%20%u0441%u043F%u0440%u0430%u0432%u0430%20%u043E%u0442%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%20%20%20%20%20sel%20%3D%20sel.replace%28/%5Cs+/g%2C%22%3A%22%29%3B%20//%20%u0437%u0430%u043C%u0435%u043D%u0438%u0442%u044C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%20%u0432%u043D%u0443%u0442%u0440%u0438%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%0A%20%20%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u043F%u043E%u0440%u0442%20...%0A%20%20%20%20%20if%20%28%20sel.length%20%3C%206%20%26%26%20isFinite%28sel%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20sel%20%3D%20sel.replace%28/%3A/g%2C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u043F%u043E%u0440%u0442%27%3B%0A%20%20%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.http_port%22%2C%20+sel%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u0430%u0434%u0440%u0435%u0441%20...%0A%20%20%20%20%20if%20%28%20sel.length%20%3E%205%20%26%26%20%21/%3A/.test%28sel%29%20%26%26%20sel.split%28%22.%22%29.length%20%3D%3D%204%20%29%20%7B%20%20%20%0A%20%20%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u0430%u0434%u0440%u0435%u0441%27%3B%0A%20%20%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.http%22%2C%20convertFromUnicode%28%22UTF-8%22%2C%20sel%29%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0430%u0434%u0440%u0435%u0441%20%u0438%20%u043F%u043E%u0440%u0442%20...%20%20%20%20%0A%20%20%20%20%20if%20%28%20sel.length%20%3E%205%20%26%26%20/%3A/.test%28sel%29%20%26%26%20sel.split%28%22%3A%22%29.length%20%3D%3D%202%20%26%26%20sel.split%28%22.%22%29.length%20%3D%3D%204%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u0430%u0434%u0440%u0435%u0441%20%u0438%20%u043F%u043E%u0440%u0442%27%3B%0A%20%20%20%20%20%20%20%20%20%20var%20array%20%3D%20sel.split%28%22%3A%22%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20array.forEach%28%28str%29%3D%3E%20addNewProxy%28str%29%20%29%3B%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%0A%0A%20%20%20%20%20if%20%28%20lab%20%3D%3D%20undefined%20%29%20return%3B%0A%0A%20%20%20%20%20//%20%u0432%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0440%u044F%u0434%u043E%u043C%20%u0441%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u043C%20%u0442%u0435%u043A%u0441%u0442%u043E%u043C%20...%20%20%20%20%20%0A%20%20%20%20%20function%20showTooltip%28%29%20%7B%0A%20%20%20%20%20%20%20%20var%20tooltip%20%3D%20gBrowser.appendChild%28%20document.createElement%28%22tooltip%22%29%20%29%3B%0A%20%20%20%20%20%20%20%20tooltip.style.cssText%20%3D%20%22color%3A%20red%20%21important%3B%20font-weight%3A%20bold%20%21important%3B%20font-size%3A%2014px%20%21important%3B%20-moz-box-orient%3A%20horizontal%3B%20text-align%3A%20center%3B%22%3B%0A%20%20%20%0A%20%20%20%20%20%20%20%20var%20image%20%3D%20tooltip.appendChild%28%20document.createElement%28%22image%22%29%20%29%3B%0A%20%20%20%20%20%20%20%20image.setAttribute%28%22src%22%2C%20self.image%29%3B%0A%20%20%20%0A%20%20%20%20%20%20%20%20var%20label%20%3D%20tooltip.appendChild%28%20document.createElement%28%22label%22%29%29%3B%0A%20%20%20%20%20%20%20%20label.setAttribute%28%22value%22%2C%20%22%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0435%u043D%20%22%20+%20lab%20+%20%22%20%u043F%u0440%u043E%u043A%u0441%u0438%3A%20%22%20+%20sel%29%3B%0A%0A%20%20%20%20%20%20%20%20var%20focused%20%3D%20document.commandDispatcher.focusedWindow%3B%0A%20%20%20%20%20%20%20%20var%20selection%20%3D%20focused.content.document.getSelection%28%29.getRangeAt%280%29.getBoundingClientRect%28%29%3B%0A%20%20%20%20%20%20%20%20var%20posX%20%3D%20focused.mozInnerScreenX%20+%20selection.left%3B%0A%20%20%20%20%20%20%20%20var%20posY%20%3D%20focused.mozInnerScreenY%20+%20selection.bottom%20-%205%3B%20%20%20%0A%0A%20%20%20%20%20%20%20%20tooltip.showPopup%28gBrowser%2C%20posX%2C%20posY%29%3B%0A%20%20%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20gBrowser.removeChild%28tooltip%29%2C%203000%29%3B%0A%20%20%20%20%20%7D%3B%0A%20%20%20%20%20showTooltip%28%29%3B%20%20%20%20%0A%20%20%7D%3B%0A%20%20%20%0A%7D%29%28document.getElementById%28%22contentAreaContextMenu%22%29%29%3B%20%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

bunda1
А почему бы просто меню не сделать типа такого?

скрытый текст
9b6efada5135.png

И выложенная выше кнопка не переключается на системные настройки, а именно они то мне и нужны в данный момент. В общем, лучше меню сделать, чем щелкать по кругу.

bunda1
Спасибо! Во всплывающей подсказке копки информация о прокси стала отображаться, однако прокси по-прежнему пропадает при перезапуске FF.
Так же обратил внимание, что перестал работать пункт меню кнопки "Редактировать"

IAmSelf пишет

bunda1
Спасибо! Во всплывающей подсказке копки информация о прокси стала отображаться, однако прокси по-прежнему пропадает при перезапуске FF.

Не может адрес прокси пропадать, потому что он сохраняется в about:config - network.proxy.autoconfig_url. Сохрани адрес прокси, сделай рестарт и проверь в about:config - network.proxy.autoconfig_url , если там нет адреса прокси, значит у тебя что то сбрасывает настройки в about:config и это уже не моя кнопка.

09-10-2016 12:36:55

IAmSelf пишет

Так же обратил внимание, что перестал работать пункт меню кнопки "Редактировать"

Да есть такое, буду исправлять. Можно по двойному ПКМ на кнопке исползовать "Редактировать".

bunda1
Вроде разобрался: отключил Browsec 2.0.3 и skyZIP 0.2.6.1-signed.1-signed (они у меня были в неактивном состоянии, на всякий случай) - строка с прокси стала сохраняться.

_zt пишет

bunda1
А почему бы просто меню не сделать типа такого?


И выложенная выше кнопка не переключается на системные настройки, а именно они то мне и нужны в данный момент. В общем, лучше меню сделать, чем щелкать по кругу.

Выделить код

Код:

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%3EProxy%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAAYOQAAWJ2kADh1fAAAEKAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAEEJBE4ULQ+fZ38ea/H/muhuv8gW3ztAxclewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLNlO7PH+n/3Sgu/281eP9zuHr/mWZuP4XXon/ABAeZwAAAAAAAAAAAQEBAQAAAAAZGBoTKScsLyYkKjErJSgnIC8/XgZQgP9BcZb8b5q3/oiux/+qx9r/a5Ow+zFtlv8PRWrGAAACAAEBAQMHBwcbAAAAD2BeYn769/3/4eDm/Onh5v+DnrX/A0t9/j1vlv+FqMH/lrfN/7rS4f9+pL3+M26X/xJYhu0DEiMdAAAAAAEBAQEAAAABBgUGEaSiprbPzNP239fb/4OcsP4aXYr/RHOZ/5Gwx//T5e//mrjO/3KYtv40apP/D0x77AUTIhwhHyMmeXV7mXt4fqJ3dHmce3d+n6eirODMx8r/o6q3/kN4nf92m7n/vtPj/9Hg7P/C1OL/eJq1+jtulv8bSnC7AAEGAF1aYH7//////f39/P//////////////////////////lbHC/3ilvf/K4Oz/2OXv/7nN3f6FqcP/VIiv/AseMT8AAAAAXFtef+LY5/+AT534fU2d+4VXovyKXaf+jGGp/5BlrP+GWKT/ZmGc/4Cduf+ivtD+k7HH/1t/neUTJjhFAAAAAAEBAQJfXmB/3tHl/14giPxcIYr/Zy+S/244mP9yPZv/cj6c/3M9nP9wNpf/YDSP/1k0ivu7tdP/YmNmiAAAAAAEBAQGAAAAAF9eYIDg1Ob/cDqV/HE9mv9/TaT/hler/4tdr/+NXrD/iFms/4JTqP9+SqP/cjqW+9zJ4/9ubW6JAAAAAAMDBAQAAAAAX15ggODU5v94RZz8e0mi/4pcrv+Vabf/nXO9/6J5wf+jfMH/oXq//513u/+NY6z718bh/2pqa4gAAAAABAMEBAAAAABfXWCA4NTm/4VWpfyPY7L/onvA/7GPzP+8ndT/waTY/8Cj1/+6nNL/tZfO/6F9uvvYx+L/ampriAAAAAAEAwQEAAAAAF9eYH/e0uX/n3u5/LKTzP/Bpdf/zrbh/9jC6f/bxuv/2cTp/9O+5P/Qu+H/uJ3L+9jI4f9qaWuHAAAAAAQDBAQAAAAAX15gf97S5P+gfbf5sZPH/LqdzfzCqNT8ybHZ/My12vzKs9n8xq/W/Mav1fywksL418fh/2tqbIkAAAAABAMEBAAAAABZVlt3+fX8/+DU5vzj1un/5tvt/+ne7//r4PH/6t7w/+fb7f/k2Ov/4dPn/9nM4Pv79v//ZGFnfwAAAAADAwQEAAAAABcVGRpZVlt6YF9hgWBgYoBhYWKAYmFigGJiY4BiYmOAYmFigGFhYoBgYGGAX15ggF1aX4AbGR0eAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20Proxy%2C%20%u043E%u0442%2010.10.2016.%0A%0A%0A//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0434%u043B%u0438%u043D%u043D%u043E%u0433%u043E%20%u043A%u043B%u0438%u043A%u0430%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Athis.onmousedown%20%3De%3D%3E%20%7B%0A%20%20%20%20if%20%28%20e.button%20%29%20return%3B%0A%20%20%20%20%0A%20%20%20%20self.timer%20%3D%20setTimeout%28%28%29%3D%3E%20%7B%0A%20%20%20%20%20%20%20self.onmouseup%20%3D%20null%3B%0A%20%20%20%20%20%20%20if%20%28%20e.target.localName%20%3D%3D%20%22menuitem%22%20%29%20return%3B%0A%20%20%20%20%20%20%20cbu.getPrefs%28%22CB.Proxy.connectionsInTab%22%29%20%3F%20openConnectionsInTab%28%29%20%3A%20openConnections%28%29%3B%0A%20%20%20%20%7D%2C%20500%20%29%3B%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20self.onmouseup%20%3D%28%29%3D%3E%20%7B%0A%20%20%20%20%20%20%20clearTimeout%28self.timer%29%3B%0A%20%20%20%20%20%20%20menuPopup.showPopup%28self%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%20%20%20%20%7D%0A%7D%3B%0A%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Athis.onmouseover%20%3D%28%29%3D%3E%20%7B%0A%20%20%20var%20arr%20%3D%20%5B%22%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%22%2C%20%22%u0420%u0443%u0447%u043D%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%22%2C%20%22%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0430%u044F%20%u0447%u0435%u0440%u0435%u0437%20URL%22%2C%20%22%22%2C%20%22%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%22%2C%20%22%u0421%u0438%u0441%u0442%u0435%u043C%u043D%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%22%5D%3B%0A%20%20%20var%20str%20%3D%20arr.map%28%28m%2C%20i%29%3D%3E%20%28cbu.getPrefs%28%22network.proxy.type%22%29%20%3D%3D%20i%20%3F%20%22%u25CF%22%20%3A%20%22%20%20%22%29%20+%20m%29.filter%28m%3D%3E%20/%5CS/.test%28m%29%29.join%28%22%5Cn%22%29%3B%0A%20%20%20%20%20%0A%20%20%20this.tooltipText%20%3D%20%22Proxy%22%20%0A%20%20%20%20%20%20+%20%22%5Cn%22%20+%20str%0A%20%20%20%20%20%20+%20%22%5Cn%5Cn%u041B%3A%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0440%u0435%u0436%u0438%u043C%20%u043F%u0440%u043E%u043A%u0441%u0438%20%5Cn%u0414%u041B%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%22%0A%20%20%20%20%20%20+%20%22%5Cn%u041F%3A%20M%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%20%5Cn%5Cn%u0422%u0435%u043A%u0443%u0449%u0438%u0435%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%3A%22%20%0A%20%20%20%20%20%20+%20%22%5CnIP%3A%20%22%20+%20Services.prefs.getComplexValue%28%22network.proxy.http%22%2C%20Ci.nsISupportsString%29.data%0A%20%20%20%20%20%20+%20%22%5Cn%u041F%u043E%u0440%u0442%3A%20%22%20+%20cbu.getPrefs%28%22network.proxy.http_port%22%29%0A%20%20%20%20%20%20+%20%22%5CnURL%3A%20%22%20+%20Services.prefs.getComplexValue%28%22network.proxy.autoconfig_url%22%2C%20Ci.nsISupportsString%29.data%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%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%7D%3B%0A%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Avar%20array%20%3D%20%5B%0A%20%20%20%7B%20label%3A%20%22%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%22%2C%20value%3A%200%2C%20radio%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u0420%u0443%u0447%u043D%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0441%u0435%u0440%u0432%u0438%u0441%u0430%20%u043F%u0440%u043E%u043A%u0441%u0438%3A%22%2C%20value%3A%201%2C%20radio%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22URL%20%u0430%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u043E%u0439%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u0441%u0435%u0440%u0432%u0438%u0441%u0430%20%u043F%u0440%u043E%u043A%u0441%u0438%22%2C%20value%3A%202%2C%20radio%3A%20%27%27%7D%2C%20%0A%20%20%20%7B%20label%3A%20%22%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0438%20%u043E%u043F%u0440%u0435%u0434%u0435%u043B%u044F%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0434%u043B%u044F%20%u044D%u0442%u043E%u0439%20%u0441%u0435%u0442%u0438%22%2C%20value%3A%204%2C%20radio%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u0418%u0441%u043F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u0442%u044C%20%u0441%u0438%u0441%u0442%u0435%u043C%u043D%u044B%u0435%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%22%2C%20value%3A%205%2C%20radio%3A%20%27%27%7D%2C%20%0A%20%20%20%7B%20separator%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u0414%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043E%u043C%20%u043C%u0435%u043D%u044E%22%2C%20value%3A%20%27CB.Proxy.inContextMenu%27%2C%20checkbox%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u041E%u0442%u043A%u0440%u044B%u0432%u0430%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u043A%u0430%u043A%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%22%2C%20value%3A%20%27CB.Proxy.connectionsInTab%27%2C%20checkbox%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u043D%u0430%20%u0440%u0435%u0436%u0438%u043C%20%27%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%27%20%u043F%u0440%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0438%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%22%2C%20value%3A%20%27CB.Proxy.reset%27%2C%20checkbox%3A%20%27%27%7D%20%20%20%20%0A%5D%3B%0Avar%20menuPopup%20%3D%20self.appendChild%28%20document.createElement%28%22menupopup%22%29%20%29%3B%20%20%0Aarray.forEach%28m%3D%3E%20%7B%0A%20%20%20if%20%28%20%22separator%22%20in%20m%20%29%20%7B%20menuPopup.appendChild%28%20document.createElement%28%22menuseparator%22%29%20%29%3B%20return%20%7D%3B%0A%20%20%20var%20mItem%20%3D%20menuPopup.appendChild%28document.createElement%28%22menuitem%22%29%29%0A%20%20%20mItem.setAttribute%28%22label%22%2C%20m.label%29%3B%0A%0A%20%20%20if%20%28%20%22radio%22%20in%20m%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20mItem.setAttribute%28%22type%22%2C%20%22radio%22%29%3B%0A%20%20%20%20%20%20%20%20mItem.setAttribute%28%27checked%27%2C%20cbu.getPrefs%28%22network.proxy.type%22%29%20%3D%3D%20m.value%29%3B%0A%20%20%20%20%20%20%20%20mItem.onclick%20%3D%28%29%3D%3E%20cbu.setPrefs%28%22network.proxy.type%22%2C%20m.value%29%3B%20%20%0A%20%20%20%20%20%20%20%20%7D%20%20%0A%20%20%20if%20%28%20%22checkbox%22%20in%20m%20%29%20%7B%0A%20%20%20%20%20%20%20%20mItem.setAttribute%28%27type%27%2C%20%27checkbox%27%29%3B%0A%20%20%20%20%20%20%20%20mItem.setAttribute%28%27checked%27%2C%20cbu.getPrefs%28m.value%29%20%29%3B%0A%20%20%20%20%20%20%20%20mItem.onclick%20%3D%28%29%3D%3E%20cbu.setPrefs%28m.value%2C%20%21cbu.getPrefs%28m.value%29%29%3B%20%20%0A%20%20%20%20%20%20%20%20%7D%0A%7D%29%3B%0AmenuPopup.setAttribute%28%22onclick%22%2C%20%22event.stopPropagation%28%29%22%29%3B%0A%0A%0A%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043E%u043A%u043D%u0435%20...................%20%20%0Afunction%20openConnections%28%29%20%7B%0A%20%20%20self.win%20%26%26%20self.win.close%28%29%3B%0A%20%20%20self.win%20%3D%20openDialog%28%22chrome%3A//browser/content/preferences/connection.xul%22%2C%20%22Proxy%22%2C%20%22centerscreen%22%29%3B%0A%20%20%20%0A%20%20%20//%20%u0434%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%20%22prefwindow%22%0A%20%20%20self.win.addEventListener%28%22load%22%2C%20function%20f%28e%29%20%7B%0A%20%20%20%20%20%20%20this.removeEventListener%28%22load%22%2C%20f%2C%20true%29%3B%20%0A%20%20%20%20%20%20%20e.target.documentElement.setAttribute%28%22type%22%2C%20%22prefwindow%22%29%3B%0A%20%20%20%7D%2C%20true%29%3B%0A%0A%20%20%20//%20%u0437%u0430%u043A%u0440%u044B%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u043F%u043E%20%u043A%u043B%u0438%u043A%u0443%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%0A%20%20%20gBrowser.addEventListener%28%22click%22%2C%20function%20c%28%29%20%7B%0A%20%20%20%20%20%20this.removeEventListener%28%22click%22%2C%20c%29%3B%0A%20%20%20%20%20%20try%20%7B%20self.win.close%28%29%20%7D%20catch%28e%29%20%7B%7D%3B%20%0A%20%20%20%7D%2C%20true%29%3B%0A%7D%3B%0A%0A%0A%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20...................%0Afunction%20openConnectionsInTab%28%29%20%7B%20%0A%20%20%20var%20connections%20%3D%20gBrowser.getBrowserForTab%28%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28%22chrome%3A//browser/content/preferences/connection.xul%22%29%20%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20//%20o%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%20%u0436%u0434%u0435%u0442%20%u043F%u043E%u043A%u0430%20%u043E%u0442%u043A%u0440%u043E%u0435%u0442%u0441%u044F%20%u043F%u0440%u043E%u043A%u0441%u0438%2C%20%u0443%u0434%u0430%u043B%u044F%u0435%u0442%20%u0441%u0435%u0431%u044F%20%u0438%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%0A%20%20%20connections.addEventListener%28%22pageshow%22%2C%20function%20c%28e%29%20%7B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20this.removeEventListener%28e.type%2C%20c%29%3B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20e.originalTarget.documentElement.setAttribute%28%22type%22%2C%20%22prefwindow%22%29%3B%0A%20%20%20%7D%29%20%20%20%0A%7D%3B%0A%0A%0A%0A//%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0438%u0432%u0430%u0442%u044C%20%u043D%u0443%u0436%u043D%u0443%u044E%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u0440%u0438%20%u0441%u0442%u0430%u0440%u0442%u0435%20%u0431%u0430%u0443%u0437%u0435%u0440%u0430%20%u0438%u043B%u0438%20%u043F%u0440%u0438%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%u0445%20%u0432%20%27about%3Aconfig%27%20...................%0Avar%20s%20%3D%20%22network.proxy.type%22%3B%0Afunction%20toggleImage%28%29%20%7B%0A%20%20%20var%20icon%20%3D%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0A%20%20%20switch%28%20cbu.getPrefs%28s%29%20%29%20%7B%0A%20%20%20%20%20%20case%200%3A%20icon.src%20%3D%20self.image%3B%20break%3B%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20case%201%3A%20icon.src%20%3D%20%27data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAA4GQAAnFmkAHQ5fAAQAKAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAQBJBFQOLQ+nX38ecev/mu6of8gfFvtAyUXewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLUza7PKd//3S7oP2849X9zuvh/mW4mf4XiV7/AB4QZwAAAAAAAAAAAQEBAQAAAAAZGhgTKSwnLyYqJDErKCUnID8vXgaAUP9BlnH8b7ea/ojHrv+q2sf/a7CT+zGWbf8PakXGAAIAAAEBAQMHBwcbAAAAD2BiXn76/ff/4ebg/Onm4f+DtZ7/A31L/j2Wb/+Fwaj/ls23/7rh0v9+vaT+M5du/xKGWO0DIxIdAAAAAAEBAQEAAAABBgYFEaSmorbP08z239vX/4OwnP4ail3/RJlz/5HHsP/T7+X/ms64/3K2mP40k2r/D3tM7AUiExwhIx8meXt1mXt+eKJ3eXSce353n6esouDMysf/o7eq/kOdeP92uZv/vuPT/9Hs4P/C4tT/eLWa+juWbv8bcEq7AAYBAF1gWn7//////f39/P//////////////////////////lcKx/3i9pf/K7OD/2O/l/7ndzf6Fw6n/VK+I/AsxHj8AAAAAXF5bf+Ln2P+AnU/4fZ1N+4WiV/yKp13+jKlh/5CsZf+GpFj/Zpxh/4C5nf+i0L7+k8ex/1udf+UTOCZFAAAAAAEBAQJfYF5/3uXR/16IIPxciiH/Z5Iv/26YOP9ymz3/cpw+/3OcPf9wlzb/YI80/1mKNPu707X/YmZjiAAAAAAEBAQGAAAAAF9gXoDg5tT/cJU6/HGaPf9/pE3/hqtX/4uvXf+NsF7/iKxZ/4KoU/9+o0r/cpY6+9zjyf9ubm2JAAAAAAMEAwQAAAAAX2BegODm1P94nEX8e6JJ/4quXP+Vt2n/nb1z/6LBef+jwXz/ob96/527d/+NrGP71+HG/2praogAAAAABAQDBAAAAABfYF2A4ObU/4WlVvyPsmP/osB7/7HMj/+81J3/wdik/8DXo/+60pz/tc6X/6G6ffvY4sf/amtqiAAAAAAEBAMEAAAAAF9gXn/e5dL/n7l7/LLMk//B16X/zuG2/9jpwv/b68b/2enE/9Pkvv/Q4bv/uMud+9jhyP9qa2mHAAAAAAQEAwQAAAAAX2Bef97k0v+gt335sceT/LrNnfzC1Kj8ydmx/MzatfzK2bP8xtav/MbVr/ywwpL41+HH/2tsaokAAAAABAQDBAAAAABZW1Z3+fz1/+Dm1Pzj6db/5u3b/+nv3v/r8eD/6vDe/+ft2//k69j/4efT/9ngzPv7//b/ZGdhfwAAAAADBAMEAAAAABcZFRpZW1Z6YGFfgWBiYIBhYmGAYmJhgGJjYoBiY2KAYmJhgGFiYYBgYWCAX2BegF1fWoAbHRkeAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%27%3B%20break%3B%0A%20%20%20%20%20%20case%202%3A%20icon.src%20%3D%20%27data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAAcHQAAYGGkAEBBfAAEBKAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABAQEAAgICAAICAgACAgMBAQEAAAEBJAA6OrQAf3/8ALCw/gCiov8AXl7tABkZewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMAOTm7AIOD/wCjo/0A1tb9AOHh/gCcnP4AY2P/ABISZwAAAAAAAAAAAAEBAQAAAAAAGBgTACgoLwAmJjEAJiYnADIyXgBWVv8Adnb8AJ2d/gCxsf8Aycn/AJeX+wBycv8ASkrGAAACAAABAQMABwcbAAAADwBfX34A+fn/AOHh/ADj4/8AoaH/AFJS/gB1df8Aq6v/ALm5/wDT0/8Ap6f+AHNz/wBeXu0AFRUdAAAAAAABAQEAAAABAAUFEQCjo7YAzs72ANnZ/wCfn/4AY2P/AHl5/wCzs/8A5ub/ALu7/wCcnP4AcHD/AFNT7AAVFRwAICAmAHd3mQB6eqIAdXWcAHl5nwClpeAAyMj/AK2t/gB9ff8An5//ANXV/wDh4f8A1tb/AJ6e+gB0dP8AUFC7AAEGAABcXH4A////AP39/AD///8A////AP///wD///8A////ALOz/wCnp/8A4eH/AObm/wDPz/4ArKz/AI2N/AAhIT8AAAAAAFxcfwDd3f8Aa2v4AGpq+wBycvwAeHj+AHt7/wB/f/8Ac3P/AHNz/wCiov8AwMD+ALS0/wCEhOUAKSlFAAAAAAABAQIAXl5/ANjY/wBGRvwARkb/AFJS/wBaWv8AX1//AF9f/wBfX/8AWVn/AFRU/wBRUfsAvr7/AGNjiAAAAAAABAQGAAAAAABeXoAA2tr/AFtb/ABeXv8AbGz/AHV1/wB6ev8Ae3v/AHd3/wBxcf8Aamr/AFtb+wDS0v8AbW2JAAAAAAADAwQAAAAAAF5egADa2v8AZGT8AGlp/wB5ef8AhYX/AI2N/wCTk/8AlJT/AJKS/wCPj/8AfX37AM/P/wBqaogAAAAAAAMDBAAAAAAAXl6AANra/wBycvwAf3//AJOT/wClpf8AsLD/ALa2/wC1tf8Ar6//AKqq/wCTk/sA0ND/AGpqiAAAAAAAAwMEAAAAAABeXn8A2dn/AJGR/ACnp/8At7f/AMXF/wDQ0P8A09P/ANHR/wDLy/8AyMj/AK2t+wDR0f8AaWmHAAAAAAADAwQAAAAAAF5efwDY2P8AkpL5AKWl/ACurvwAuLj8AL+//ADCwvwAwMD8AL29/AC8vPwAo6P4ANDQ/wBqaokAAAAAAAMDBAAAAAAAV1d3APf3/wDa2vwA3d3/AOHh/wDk5P8A5ub/AOTk/wDh4f8A39//ANra/wDT0/sA+fn/AGNjfwAAAAAAAwMEAAAAAAAWFhoAV1d6AF9fgQBgYIAAYWGAAGFhgABiYoAAYmKAAGFhgABhYYAAYGCAAF5egABbW4AAGhoeAAAAAAABAQEAAAAA/oOAQeEAgEH6AIBBoACAQQAAAEGAAABBAACAQQAAgEEAAQBBAAKAQQACgEEAAoBBAAKAQQACgEEAAoBBAAKAQQACgEE%3D%27%3B%20break%3B%0A%20%20%20%20%20%20default%3Aicon.src%20%3D%20self.image%3B%20%0A%20%20%20%7D%0A%7D%3B%20%20%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28%28%29%3D%3E%20gPrefService.removeObserver%28s%2C%20toggleImage%29%20%29%3B%0A%0A%0A%0A//%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u043D%u0430%20%u0440%u0435%u0436%u0438%u043C%20%27%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%27%20%u043F%u0440%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0438%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20...................%0Avar%20switchOffProxy%20%3D%20%7B%0A%20%20%20%20observe%3A%20function%28subject%2C%20topic%2C%20data%29%20%7B%0A%20%20%20%20%20%20%20if%20%28%20data%20%3D%3D%20%22shutdown%22%20%26%26%20cbu.getPrefs%28%22CB.Proxy.reset%22%29%20%29%20cbu.setPrefs%28%22network.proxy.type%22%2C%200%29%3B%20%20%0A%20%20%20%20%7D%0A%7D%3B%0AServices.obs.addObserver%28switchOffProxy%2C%20%22quit-application%22%2C%20false%29%3B%0A%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0435%u043C%20%u043C%u0435%u043D%u044E%20%u0434%u043B%u044F%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u043C%20%u043C%u0435%u043D%u044E%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20...................%0A%28%28contextMenu%29%3D%3E%20%7B%0A%0A%20%20//%20%u0441%u043E%u0437%u0434%u0430%u0442%u044C%20%u043D%u043E%u0432%u044B%u0439%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E%0A%20%20var%20menuitem%20%3D%20document.createElement%28%22menuitem%22%29%3B%20%20%20%20%20%20%0A%20%20menuitem.setAttribute%28%22label%22%2C%20%22%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u043F%u0440%u043E%u043A%u0441%u0438%22%29%3B%20%0A%20%20menuitem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%0A%20%20menuitem.setAttribute%28%22image%22%2C%20self.image%29%3B%0A%20%20menuitem.onclick%20%3D%28%29%3D%3E%20addNewProxy%28%29%3B%0A%20%20contextMenu.appendChild%28menuitem%29%3B%20//%20%u043A%u0430%u043A%20%u043F%u043E%u0441%u043B%u0435%u0434%u043D%u0438%u0439%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E%0A%20%20addDestructor%28%28%29%3D%3E%20menuitem.remove%28%29%20%29%3B%0A%20%20%0A%20%20//%20%u0443%u0441%u0442%u0430%u043D%u0430%u0432%u043B%u0438%u0432%u0430%u0435%u043C%20%u0433%u0434%u0435%20%u043F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E%20%0A%20%20addEventListener%28%22popupshowing%22%2C%20%28%29%3D%3E%7B%0A%20%20%20%20%20menuitem.hidden%20%3D%20%21cbu.getPrefs%28%22CB.Proxy.inContextMenu%22%29%20%7C%7C%20%21gContextMenu.isContentSelected%3B%20//%20%21gContextMenu.isTextSelected%3B%0A%20%20%7D%2C%20false%2C%20contextMenu%29%3B%0A%20%20%0A%20%20%0A%20%20//%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%0A%20%20function%20addNewProxy%28sel%29%20%7B%20%20%0A%20%20%20%20%20var%20selection%20%3D%20gBrowser.contentDocument.defaultView.getSelection%28%29.toString%28%29%3B%0A%20%20%20%20%20var%20sel%20%3D%20%28%20sel%20%3D%3D%20undefined%20%29%20%3F%20selection%20%3A%20sel.toString%28%29%3B%0A%20%20%20%20%20sel%20%3D%20sel.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%20%22%22%29%3B%20//%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%2C%20%u0441%u043B%u0435%u0432%u0430%20%u0438%20%u0441%u043F%u0440%u0430%u0432%u0430%20%u043E%u0442%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%20%20%20%20%20sel%20%3D%20sel.replace%28/%5Cs+/g%2C%22%3A%22%29%3B%20//%20%u0437%u0430%u043C%u0435%u043D%u0438%u0442%u044C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%20%u0432%u043D%u0443%u0442%u0440%u0438%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%0A%20%20%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u043F%u043E%u0440%u0442%20...%0A%20%20%20%20%20if%20%28%20sel.length%20%3C%206%20%26%26%20isFinite%28sel%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20sel%20%3D%20sel.replace%28/%3A/g%2C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u043F%u043E%u0440%u0442%27%3B%0A%20%20%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.http_port%22%2C%20+sel%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u0430%u0434%u0440%u0435%u0441%20...%0A%20%20%20%20%20if%20%28%20sel.length%20%3E%205%20%26%26%20%21/%3A/.test%28sel%29%20%26%26%20sel.split%28%22.%22%29.length%20%3D%3D%204%20%29%20%7B%20%20%20%0A%20%20%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u0430%u0434%u0440%u0435%u0441%27%3B%0A%20%20%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.http%22%2C%20convertFromUnicode%28%22UTF-8%22%2C%20sel%29%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0430%u0434%u0440%u0435%u0441%20%u0438%20%u043F%u043E%u0440%u0442%20...%20%20%20%20%0A%20%20%20%20%20if%20%28%20sel.length%20%3E%205%20%26%26%20/%3A/.test%28sel%29%20%26%26%20sel.split%28%22%3A%22%29.length%20%3D%3D%202%20%26%26%20sel.split%28%22.%22%29.length%20%3D%3D%204%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u0430%u0434%u0440%u0435%u0441%20%u0438%20%u043F%u043E%u0440%u0442%27%3B%0A%20%20%20%20%20%20%20%20%20%20var%20array%20%3D%20sel.split%28%22%3A%22%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20array.forEach%28%28str%29%3D%3E%20addNewProxy%28str%29%20%29%3B%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%0A%0A%20%20%20%20%20if%20%28%20lab%20%3D%3D%20undefined%20%29%20return%3B%0A%0A%20%20%20%20%20//%20%u0432%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0440%u044F%u0434%u043E%u043C%20%u0441%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u043C%20%u0442%u0435%u043A%u0441%u0442%u043E%u043C%20...%20%20%20%20%20%0A%20%20%20%20%20function%20showTooltip%28%29%20%7B%0A%20%20%20%20%20%20%20%20var%20tooltip%20%3D%20gBrowser.appendChild%28%20document.createElement%28%22tooltip%22%29%20%29%3B%0A%20%20%20%20%20%20%20%20tooltip.style.cssText%20%3D%20%22color%3A%20red%20%21important%3B%20font-weight%3A%20bold%20%21important%3B%20font-size%3A%2014px%20%21important%3B%20-moz-box-orient%3A%20horizontal%3B%20text-align%3A%20center%3B%22%3B%0A%20%20%20%0A%20%20%20%20%20%20%20%20var%20image%20%3D%20tooltip.appendChild%28%20document.createElement%28%22image%22%29%20%29%3B%0A%20%20%20%20%20%20%20%20image.setAttribute%28%22src%22%2C%20self.image%29%3B%0A%20%20%20%0A%20%20%20%20%20%20%20%20var%20label%20%3D%20tooltip.appendChild%28%20document.createElement%28%22label%22%29%29%3B%0A%20%20%20%20%20%20%20%20label.setAttribute%28%22value%22%2C%20%22%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0435%u043D%20%22%20+%20lab%20+%20%22%20%u043F%u0440%u043E%u043A%u0441%u0438%3A%20%22%20+%20sel%29%3B%0A%0A%20%20%20%20%20%20%20%20var%20focused%20%3D%20document.commandDispatcher.focusedWindow%3B%0A%20%20%20%20%20%20%20%20var%20selection%20%3D%20focused.content.document.getSelection%28%29.getRangeAt%280%29.getBoundingClientRect%28%29%3B%0A%20%20%20%20%20%20%20%20var%20posX%20%3D%20focused.mozInnerScreenX%20+%20selection.left%3B%0A%20%20%20%20%20%20%20%20var%20posY%20%3D%20focused.mozInnerScreenY%20+%20selection.bottom%20-%205%3B%20%20%20%0A%0A%20%20%20%20%20%20%20%20tooltip.showPopup%28gBrowser%2C%20posX%2C%20posY%29%3B%0A%20%20%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20gBrowser.removeChild%28tooltip%29%2C%203000%29%3B%0A%20%20%20%20%20%7D%3B%0A%20%20%20%20%20showTooltip%28%29%3B%20%20%20%20%0A%20%20%7D%3B%0A%20%20%20%0A%7D%29%28document.getElementById%28%22contentAreaContextMenu%22%29%29%3B%20%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

bunda1
О-о, я счастлив. А СКМ (она же свободна) и пункт в меню кнопки для открытия настроек можно?

_zt пишет

bunda1
О-о, я счастлив. А СКМ (она же свободна) и пункт в меню кнопки для открытия настроек можно?

Там же Длинный ЛКМ открывает настройки прокси.

bunda1
Не могу понять логики срабатывания. Ставлю галку "Открывать как вкладку" жму "Ручная настройка" чтобы вбить прокси, но вкладка не гугу. Или на 42 [firefox] не будет работать?

villa7 пишет

bunda1
Не могу понять логики срабатывания. Ставлю галку "Открывать как вкладку" жму "Ручная настройка" чтобы вбить прокси, но вкладка не гугу. Или на 42 [firefox] не будет работать?

Не понял. Ты сейчас про какую кнопку?

bunda1
Я считаю, что длинные нажатия стоит использовать когда другие заняты, а лучше вообще не использовать, так как это потеря времени. Как изменить на СКМ?

bunda1
Proxy

_zt пишет

bunda1
Я считаю, что длинные нажатия стоит использовать когда другие заняты, а лучше вообще не использовать, так как это потеря времени. Как изменить на СКМ?

Выделить код

Код:

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%3EProxy%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAAYOQAAWJ2kADh1fAAAEKAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAEEJBE4ULQ+fZ38ea/H/muhuv8gW3ztAxclewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLNlO7PH+n/3Sgu/281eP9zuHr/mWZuP4XXon/ABAeZwAAAAAAAAAAAQEBAQAAAAAZGBoTKScsLyYkKjErJSgnIC8/XgZQgP9BcZb8b5q3/oiux/+qx9r/a5Ow+zFtlv8PRWrGAAACAAEBAQMHBwcbAAAAD2BeYn769/3/4eDm/Onh5v+DnrX/A0t9/j1vlv+FqMH/lrfN/7rS4f9+pL3+M26X/xJYhu0DEiMdAAAAAAEBAQEAAAABBgUGEaSiprbPzNP239fb/4OcsP4aXYr/RHOZ/5Gwx//T5e//mrjO/3KYtv40apP/D0x77AUTIhwhHyMmeXV7mXt4fqJ3dHmce3d+n6eirODMx8r/o6q3/kN4nf92m7n/vtPj/9Hg7P/C1OL/eJq1+jtulv8bSnC7AAEGAF1aYH7//////f39/P//////////////////////////lbHC/3ilvf/K4Oz/2OXv/7nN3f6FqcP/VIiv/AseMT8AAAAAXFtef+LY5/+AT534fU2d+4VXovyKXaf+jGGp/5BlrP+GWKT/ZmGc/4Cduf+ivtD+k7HH/1t/neUTJjhFAAAAAAEBAQJfXmB/3tHl/14giPxcIYr/Zy+S/244mP9yPZv/cj6c/3M9nP9wNpf/YDSP/1k0ivu7tdP/YmNmiAAAAAAEBAQGAAAAAF9eYIDg1Ob/cDqV/HE9mv9/TaT/hler/4tdr/+NXrD/iFms/4JTqP9+SqP/cjqW+9zJ4/9ubW6JAAAAAAMDBAQAAAAAX15ggODU5v94RZz8e0mi/4pcrv+Vabf/nXO9/6J5wf+jfMH/oXq//513u/+NY6z718bh/2pqa4gAAAAABAMEBAAAAABfXWCA4NTm/4VWpfyPY7L/onvA/7GPzP+8ndT/waTY/8Cj1/+6nNL/tZfO/6F9uvvYx+L/ampriAAAAAAEAwQEAAAAAF9eYH/e0uX/n3u5/LKTzP/Bpdf/zrbh/9jC6f/bxuv/2cTp/9O+5P/Qu+H/uJ3L+9jI4f9qaWuHAAAAAAQDBAQAAAAAX15gf97S5P+gfbf5sZPH/LqdzfzCqNT8ybHZ/My12vzKs9n8xq/W/Mav1fywksL418fh/2tqbIkAAAAABAMEBAAAAABZVlt3+fX8/+DU5vzj1un/5tvt/+ne7//r4PH/6t7w/+fb7f/k2Ov/4dPn/9nM4Pv79v//ZGFnfwAAAAADAwQEAAAAABcVGRpZVlt6YF9hgWBgYoBhYWKAYmFigGJiY4BiYmOAYmFigGFhYoBgYGGAX15ggF1aX4AbGR0eAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20Proxy%2C%20%u043E%u0442%2010.10.2016.%0A%0A%0A//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Athis.onclick%20%3De%3D%3E%20%7B%0A%20%20%20%0A%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041B%u041A%u041C%20....%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%0A%20%20%20%20%20%20%20%20menuPopup.showPopup%28self%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%20....%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20%0A%20%20%20%20%20%20%20%20cbu.getPrefs%28%22CB.Proxy.connectionsInTab%22%29%20%3F%20openConnectionsInTab%28%29%20%3A%20openConnections%28%29%3B%0A%7D%3B%0A%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Athis.onmouseover%20%3D%28%29%3D%3E%20%7B%0A%20%20%20var%20arr%20%3D%20%5B%22%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%22%2C%20%22%u0420%u0443%u0447%u043D%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%22%2C%20%22%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0430%u044F%20%u0447%u0435%u0440%u0435%u0437%20URL%22%2C%20%22%22%2C%20%22%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%22%2C%20%22%u0421%u0438%u0441%u0442%u0435%u043C%u043D%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%22%5D%3B%0A%20%20%20var%20str%20%3D%20arr.map%28%28m%2C%20i%29%3D%3E%20%28cbu.getPrefs%28%22network.proxy.type%22%29%20%3D%3D%20i%20%3F%20%22%u25CF%22%20%3A%20%22%20%20%22%29%20+%20m%29.filter%28m%3D%3E%20/%5CS/.test%28m%29%29.join%28%22%5Cn%22%29%3B%0A%20%20%20%20%20%0A%20%20%20this.tooltipText%20%3D%20%22Proxy%22%20%0A%20%20%20%20%20%20+%20%22%5Cn%22%20+%20str%0A%20%20%20%20%20%20+%20%22%5Cn%5Cn%u041B%3A%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0440%u0435%u0436%u0438%u043C%20%u043F%u0440%u043E%u043A%u0441%u0438%20%5Cn%u0414%u041B%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%22%0A%20%20%20%20%20%20+%20%22%5Cn%u041F%3A%20M%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%20%5Cn%5Cn%u0422%u0435%u043A%u0443%u0449%u0438%u0435%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%3A%22%20%0A%20%20%20%20%20%20+%20%22%5CnIP%3A%20%22%20+%20Services.prefs.getComplexValue%28%22network.proxy.http%22%2C%20Ci.nsISupportsString%29.data%0A%20%20%20%20%20%20+%20%22%5Cn%u041F%u043E%u0440%u0442%3A%20%22%20+%20cbu.getPrefs%28%22network.proxy.http_port%22%29%0A%20%20%20%20%20%20+%20%22%5CnURL%3A%20%22%20+%20Services.prefs.getComplexValue%28%22network.proxy.autoconfig_url%22%2C%20Ci.nsISupportsString%29.data%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%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%7D%3B%0A%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Avar%20array%20%3D%20%5B%0A%20%20%20%7B%20label%3A%20%22%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%22%2C%20value%3A%200%2C%20radio%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u0420%u0443%u0447%u043D%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0441%u0435%u0440%u0432%u0438%u0441%u0430%20%u043F%u0440%u043E%u043A%u0441%u0438%3A%22%2C%20value%3A%201%2C%20radio%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22URL%20%u0430%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u043E%u0439%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u0441%u0435%u0440%u0432%u0438%u0441%u0430%20%u043F%u0440%u043E%u043A%u0441%u0438%22%2C%20value%3A%202%2C%20radio%3A%20%27%27%7D%2C%20%0A%20%20%20%7B%20label%3A%20%22%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0438%20%u043E%u043F%u0440%u0435%u0434%u0435%u043B%u044F%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0434%u043B%u044F%20%u044D%u0442%u043E%u0439%20%u0441%u0435%u0442%u0438%22%2C%20value%3A%204%2C%20radio%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u0418%u0441%u043F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u0442%u044C%20%u0441%u0438%u0441%u0442%u0435%u043C%u043D%u044B%u0435%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%22%2C%20value%3A%205%2C%20radio%3A%20%27%27%7D%2C%20%0A%20%20%20%7B%20separator%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u0414%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043E%u043C%20%u043C%u0435%u043D%u044E%22%2C%20value%3A%20%27CB.Proxy.inContextMenu%27%2C%20checkbox%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u041E%u0442%u043A%u0440%u044B%u0432%u0430%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u043A%u0430%u043A%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%22%2C%20value%3A%20%27CB.Proxy.connectionsInTab%27%2C%20checkbox%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u043D%u0430%20%u0440%u0435%u0436%u0438%u043C%20%27%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%27%20%u043F%u0440%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0438%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%22%2C%20value%3A%20%27CB.Proxy.reset%27%2C%20checkbox%3A%20%27%27%7D%20%20%20%20%0A%5D%3B%0Avar%20menuPopup%20%3D%20self.appendChild%28%20document.createElement%28%22menupopup%22%29%20%29%3B%20%20%0Aarray.forEach%28m%3D%3E%20%7B%0A%20%20%20if%20%28%20%22separator%22%20in%20m%20%29%20%7B%20menuPopup.appendChild%28%20document.createElement%28%22menuseparator%22%29%20%29%3B%20return%20%7D%3B%0A%20%20%20var%20mItem%20%3D%20menuPopup.appendChild%28document.createElement%28%22menuitem%22%29%29%0A%20%20%20mItem.setAttribute%28%22label%22%2C%20m.label%29%3B%0A%0A%20%20%20if%20%28%20%22radio%22%20in%20m%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20mItem.setAttribute%28%22type%22%2C%20%22radio%22%29%3B%0A%20%20%20%20%20%20%20%20mItem.setAttribute%28%27checked%27%2C%20cbu.getPrefs%28%22network.proxy.type%22%29%20%3D%3D%20m.value%29%3B%0A%20%20%20%20%20%20%20%20mItem.onclick%20%3D%28%29%3D%3E%20cbu.setPrefs%28%22network.proxy.type%22%2C%20m.value%29%3B%20%20%0A%20%20%20%20%20%20%20%20%7D%20%20%0A%20%20%20if%20%28%20%22checkbox%22%20in%20m%20%29%20%7B%0A%20%20%20%20%20%20%20%20mItem.setAttribute%28%27type%27%2C%20%27checkbox%27%29%3B%0A%20%20%20%20%20%20%20%20mItem.setAttribute%28%27checked%27%2C%20cbu.getPrefs%28m.value%29%20%29%3B%0A%20%20%20%20%20%20%20%20mItem.onclick%20%3D%28%29%3D%3E%20cbu.setPrefs%28m.value%2C%20%21cbu.getPrefs%28m.value%29%29%3B%20%20%0A%20%20%20%20%20%20%20%20%7D%0A%7D%29%3B%0AmenuPopup.setAttribute%28%22onclick%22%2C%20%22event.stopPropagation%28%29%22%29%3B%0A%0A%0A%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043E%u043A%u043D%u0435%20...................%20%20%0Afunction%20openConnections%28%29%20%7B%0A%20%20%20self.win%20%26%26%20self.win.close%28%29%3B%0A%20%20%20self.win%20%3D%20openDialog%28%22chrome%3A//browser/content/preferences/connection.xul%22%2C%20%22Proxy%22%2C%20%22centerscreen%22%29%3B%0A%20%20%20%0A%20%20%20//%20%u0434%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%20%22prefwindow%22%0A%20%20%20self.win.addEventListener%28%22load%22%2C%20function%20f%28e%29%20%7B%0A%20%20%20%20%20%20%20this.removeEventListener%28%22load%22%2C%20f%2C%20true%29%3B%20%0A%20%20%20%20%20%20%20e.target.documentElement.setAttribute%28%22type%22%2C%20%22prefwindow%22%29%3B%0A%20%20%20%7D%2C%20true%29%3B%0A%0A%20%20%20//%20%u0437%u0430%u043A%u0440%u044B%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u043F%u043E%20%u043A%u043B%u0438%u043A%u0443%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%0A%20%20%20gBrowser.addEventListener%28%22click%22%2C%20function%20c%28%29%20%7B%0A%20%20%20%20%20%20this.removeEventListener%28%22click%22%2C%20c%29%3B%0A%20%20%20%20%20%20try%20%7B%20self.win.close%28%29%20%7D%20catch%28e%29%20%7B%7D%3B%20%0A%20%20%20%7D%2C%20true%29%3B%0A%7D%3B%0A%0A%0A%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20...................%0Afunction%20openConnectionsInTab%28%29%20%7B%20%0A%20%20%20var%20connections%20%3D%20gBrowser.getBrowserForTab%28%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28%22chrome%3A//browser/content/preferences/connection.xul%22%29%20%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20//%20o%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%20%u0436%u0434%u0435%u0442%20%u043F%u043E%u043A%u0430%20%u043E%u0442%u043A%u0440%u043E%u0435%u0442%u0441%u044F%20%u043F%u0440%u043E%u043A%u0441%u0438%2C%20%u0443%u0434%u0430%u043B%u044F%u0435%u0442%20%u0441%u0435%u0431%u044F%20%u0438%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%0A%20%20%20connections.addEventListener%28%22pageshow%22%2C%20function%20c%28e%29%20%7B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20this.removeEventListener%28e.type%2C%20c%29%3B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20e.originalTarget.documentElement.setAttribute%28%22type%22%2C%20%22prefwindow%22%29%3B%0A%20%20%20%7D%29%20%20%20%0A%7D%3B%0A%0A%0A%0A//%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0438%u0432%u0430%u0442%u044C%20%u043D%u0443%u0436%u043D%u0443%u044E%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u0440%u0438%20%u0441%u0442%u0430%u0440%u0442%u0435%20%u0431%u0430%u0443%u0437%u0435%u0440%u0430%20%u0438%u043B%u0438%20%u043F%u0440%u0438%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%u0445%20%u0432%20%27about%3Aconfig%27%20...................%0Avar%20s%20%3D%20%22network.proxy.type%22%3B%0Afunction%20toggleImage%28%29%20%7B%0A%20%20%20var%20icon%20%3D%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0A%20%20%20switch%28%20cbu.getPrefs%28s%29%20%29%20%7B%0A%20%20%20%20%20%20case%200%3A%20icon.src%20%3D%20self.image%3B%20break%3B%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20case%201%3A%20icon.src%20%3D%20%27data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAA4GQAAnFmkAHQ5fAAQAKAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAQBJBFQOLQ+nX38ecev/mu6of8gfFvtAyUXewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLUza7PKd//3S7oP2849X9zuvh/mW4mf4XiV7/AB4QZwAAAAAAAAAAAQEBAQAAAAAZGhgTKSwnLyYqJDErKCUnID8vXgaAUP9BlnH8b7ea/ojHrv+q2sf/a7CT+zGWbf8PakXGAAIAAAEBAQMHBwcbAAAAD2BiXn76/ff/4ebg/Onm4f+DtZ7/A31L/j2Wb/+Fwaj/ls23/7rh0v9+vaT+M5du/xKGWO0DIxIdAAAAAAEBAQEAAAABBgYFEaSmorbP08z239vX/4OwnP4ail3/RJlz/5HHsP/T7+X/ms64/3K2mP40k2r/D3tM7AUiExwhIx8meXt1mXt+eKJ3eXSce353n6esouDMysf/o7eq/kOdeP92uZv/vuPT/9Hs4P/C4tT/eLWa+juWbv8bcEq7AAYBAF1gWn7//////f39/P//////////////////////////lcKx/3i9pf/K7OD/2O/l/7ndzf6Fw6n/VK+I/AsxHj8AAAAAXF5bf+Ln2P+AnU/4fZ1N+4WiV/yKp13+jKlh/5CsZf+GpFj/Zpxh/4C5nf+i0L7+k8ex/1udf+UTOCZFAAAAAAEBAQJfYF5/3uXR/16IIPxciiH/Z5Iv/26YOP9ymz3/cpw+/3OcPf9wlzb/YI80/1mKNPu707X/YmZjiAAAAAAEBAQGAAAAAF9gXoDg5tT/cJU6/HGaPf9/pE3/hqtX/4uvXf+NsF7/iKxZ/4KoU/9+o0r/cpY6+9zjyf9ubm2JAAAAAAMEAwQAAAAAX2BegODm1P94nEX8e6JJ/4quXP+Vt2n/nb1z/6LBef+jwXz/ob96/527d/+NrGP71+HG/2praogAAAAABAQDBAAAAABfYF2A4ObU/4WlVvyPsmP/osB7/7HMj/+81J3/wdik/8DXo/+60pz/tc6X/6G6ffvY4sf/amtqiAAAAAAEBAMEAAAAAF9gXn/e5dL/n7l7/LLMk//B16X/zuG2/9jpwv/b68b/2enE/9Pkvv/Q4bv/uMud+9jhyP9qa2mHAAAAAAQEAwQAAAAAX2Bef97k0v+gt335sceT/LrNnfzC1Kj8ydmx/MzatfzK2bP8xtav/MbVr/ywwpL41+HH/2tsaokAAAAABAQDBAAAAABZW1Z3+fz1/+Dm1Pzj6db/5u3b/+nv3v/r8eD/6vDe/+ft2//k69j/4efT/9ngzPv7//b/ZGdhfwAAAAADBAMEAAAAABcZFRpZW1Z6YGFfgWBiYIBhYmGAYmJhgGJjYoBiY2KAYmJhgGFiYYBgYWCAX2BegF1fWoAbHRkeAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%27%3B%20break%3B%0A%20%20%20%20%20%20case%202%3A%20icon.src%20%3D%20%27data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAAcHQAAYGGkAEBBfAAEBKAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABAQEAAgICAAICAgACAgMBAQEAAAEBJAA6OrQAf3/8ALCw/gCiov8AXl7tABkZewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMAOTm7AIOD/wCjo/0A1tb9AOHh/gCcnP4AY2P/ABISZwAAAAAAAAAAAAEBAQAAAAAAGBgTACgoLwAmJjEAJiYnADIyXgBWVv8Adnb8AJ2d/gCxsf8Aycn/AJeX+wBycv8ASkrGAAACAAABAQMABwcbAAAADwBfX34A+fn/AOHh/ADj4/8AoaH/AFJS/gB1df8Aq6v/ALm5/wDT0/8Ap6f+AHNz/wBeXu0AFRUdAAAAAAABAQEAAAABAAUFEQCjo7YAzs72ANnZ/wCfn/4AY2P/AHl5/wCzs/8A5ub/ALu7/wCcnP4AcHD/AFNT7AAVFRwAICAmAHd3mQB6eqIAdXWcAHl5nwClpeAAyMj/AK2t/gB9ff8An5//ANXV/wDh4f8A1tb/AJ6e+gB0dP8AUFC7AAEGAABcXH4A////AP39/AD///8A////AP///wD///8A////ALOz/wCnp/8A4eH/AObm/wDPz/4ArKz/AI2N/AAhIT8AAAAAAFxcfwDd3f8Aa2v4AGpq+wBycvwAeHj+AHt7/wB/f/8Ac3P/AHNz/wCiov8AwMD+ALS0/wCEhOUAKSlFAAAAAAABAQIAXl5/ANjY/wBGRvwARkb/AFJS/wBaWv8AX1//AF9f/wBfX/8AWVn/AFRU/wBRUfsAvr7/AGNjiAAAAAAABAQGAAAAAABeXoAA2tr/AFtb/ABeXv8AbGz/AHV1/wB6ev8Ae3v/AHd3/wBxcf8Aamr/AFtb+wDS0v8AbW2JAAAAAAADAwQAAAAAAF5egADa2v8AZGT8AGlp/wB5ef8AhYX/AI2N/wCTk/8AlJT/AJKS/wCPj/8AfX37AM/P/wBqaogAAAAAAAMDBAAAAAAAXl6AANra/wBycvwAf3//AJOT/wClpf8AsLD/ALa2/wC1tf8Ar6//AKqq/wCTk/sA0ND/AGpqiAAAAAAAAwMEAAAAAABeXn8A2dn/AJGR/ACnp/8At7f/AMXF/wDQ0P8A09P/ANHR/wDLy/8AyMj/AK2t+wDR0f8AaWmHAAAAAAADAwQAAAAAAF5efwDY2P8AkpL5AKWl/ACurvwAuLj8AL+//ADCwvwAwMD8AL29/AC8vPwAo6P4ANDQ/wBqaokAAAAAAAMDBAAAAAAAV1d3APf3/wDa2vwA3d3/AOHh/wDk5P8A5ub/AOTk/wDh4f8A39//ANra/wDT0/sA+fn/AGNjfwAAAAAAAwMEAAAAAAAWFhoAV1d6AF9fgQBgYIAAYWGAAGFhgABiYoAAYmKAAGFhgABhYYAAYGCAAF5egABbW4AAGhoeAAAAAAABAQEAAAAA/oOAQeEAgEH6AIBBoACAQQAAAEGAAABBAACAQQAAgEEAAQBBAAKAQQACgEEAAoBBAAKAQQACgEEAAoBBAAKAQQACgEE%3D%27%3B%20break%3B%0A%20%20%20%20%20%20default%3Aicon.src%20%3D%20self.image%3B%20%0A%20%20%20%7D%0A%7D%3B%20%20%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28%28%29%3D%3E%20gPrefService.removeObserver%28s%2C%20toggleImage%29%20%29%3B%0A%0A%0A%0A//%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u043D%u0430%20%u0440%u0435%u0436%u0438%u043C%20%27%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%27%20%u043F%u0440%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0438%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20...................%0Avar%20switchOffProxy%20%3D%20%7B%0A%20%20%20%20observe%3A%20function%28subject%2C%20topic%2C%20data%29%20%7B%0A%20%20%20%20%20%20%20if%20%28%20data%20%3D%3D%20%22shutdown%22%20%26%26%20cbu.getPrefs%28%22CB.Proxy.reset%22%29%20%29%20cbu.setPrefs%28%22network.proxy.type%22%2C%200%29%3B%20%20%0A%20%20%20%20%7D%0A%7D%3B%0AServices.obs.addObserver%28switchOffProxy%2C%20%22quit-application%22%2C%20false%29%3B%0A%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0435%u043C%20%u043C%u0435%u043D%u044E%20%u0434%u043B%u044F%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u043C%20%u043C%u0435%u043D%u044E%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20...................%0A%28%28contextMenu%29%3D%3E%20%7B%0A%0A%20%20//%20%u0441%u043E%u0437%u0434%u0430%u0442%u044C%20%u043D%u043E%u0432%u044B%u0439%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E%0A%20%20var%20menuitem%20%3D%20document.createElement%28%22menuitem%22%29%3B%20%20%20%20%20%20%0A%20%20menuitem.setAttribute%28%22label%22%2C%20%22%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u043F%u0440%u043E%u043A%u0441%u0438%22%29%3B%20%0A%20%20menuitem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%0A%20%20menuitem.setAttribute%28%22image%22%2C%20self.image%29%3B%0A%20%20menuitem.onclick%20%3D%28%29%3D%3E%20addNewProxy%28%29%3B%0A%20%20contextMenu.appendChild%28menuitem%29%3B%20//%20%u043A%u0430%u043A%20%u043F%u043E%u0441%u043B%u0435%u0434%u043D%u0438%u0439%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E%0A%20%20addDestructor%28%28%29%3D%3E%20menuitem.remove%28%29%20%29%3B%0A%20%20%0A%20%20//%20%u0443%u0441%u0442%u0430%u043D%u0430%u0432%u043B%u0438%u0432%u0430%u0435%u043C%20%u0433%u0434%u0435%20%u043F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E%20%0A%20%20addEventListener%28%22popupshowing%22%2C%20%28%29%3D%3E%7B%0A%20%20%20%20%20menuitem.hidden%20%3D%20%21cbu.getPrefs%28%22CB.Proxy.inContextMenu%22%29%20%7C%7C%20%21gContextMenu.isContentSelected%3B%20//%20%21gContextMenu.isTextSelected%3B%0A%20%20%7D%2C%20false%2C%20contextMenu%29%3B%0A%20%20%0A%20%20%0A%20%20//%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%0A%20%20function%20addNewProxy%28sel%29%20%7B%20%20%0A%20%20%20%20%20var%20selection%20%3D%20gBrowser.contentDocument.defaultView.getSelection%28%29.toString%28%29%3B%0A%20%20%20%20%20var%20sel%20%3D%20%28%20sel%20%3D%3D%20undefined%20%29%20%3F%20selection%20%3A%20sel.toString%28%29%3B%0A%20%20%20%20%20sel%20%3D%20sel.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%20%22%22%29%3B%20//%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%2C%20%u0441%u043B%u0435%u0432%u0430%20%u0438%20%u0441%u043F%u0440%u0430%u0432%u0430%20%u043E%u0442%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%20%20%20%20%20sel%20%3D%20sel.replace%28/%5Cs+/g%2C%22%3A%22%29%3B%20//%20%u0437%u0430%u043C%u0435%u043D%u0438%u0442%u044C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%20%u0432%u043D%u0443%u0442%u0440%u0438%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%0A%20%20%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u043F%u043E%u0440%u0442%20...%0A%20%20%20%20%20if%20%28%20sel.length%20%3C%206%20%26%26%20isFinite%28sel%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20sel%20%3D%20sel.replace%28/%3A/g%2C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u043F%u043E%u0440%u0442%27%3B%0A%20%20%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.http_port%22%2C%20+sel%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u0430%u0434%u0440%u0435%u0441%20...%0A%20%20%20%20%20if%20%28%20sel.length%20%3E%205%20%26%26%20%21/%3A/.test%28sel%29%20%26%26%20sel.split%28%22.%22%29.length%20%3D%3D%204%20%29%20%7B%20%20%20%0A%20%20%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u0430%u0434%u0440%u0435%u0441%27%3B%0A%20%20%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.http%22%2C%20convertFromUnicode%28%22UTF-8%22%2C%20sel%29%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0430%u0434%u0440%u0435%u0441%20%u0438%20%u043F%u043E%u0440%u0442%20...%20%20%20%20%0A%20%20%20%20%20if%20%28%20sel.length%20%3E%205%20%26%26%20/%3A/.test%28sel%29%20%26%26%20sel.split%28%22%3A%22%29.length%20%3D%3D%202%20%26%26%20sel.split%28%22.%22%29.length%20%3D%3D%204%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u0430%u0434%u0440%u0435%u0441%20%u0438%20%u043F%u043E%u0440%u0442%27%3B%0A%20%20%20%20%20%20%20%20%20%20var%20array%20%3D%20sel.split%28%22%3A%22%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20array.forEach%28%28str%29%3D%3E%20addNewProxy%28str%29%20%29%3B%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%0A%0A%20%20%20%20%20if%20%28%20lab%20%3D%3D%20undefined%20%29%20return%3B%0A%0A%20%20%20%20%20//%20%u0432%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0440%u044F%u0434%u043E%u043C%20%u0441%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u043C%20%u0442%u0435%u043A%u0441%u0442%u043E%u043C%20...%20%20%20%20%20%0A%20%20%20%20%20function%20showTooltip%28%29%20%7B%0A%20%20%20%20%20%20%20%20var%20tooltip%20%3D%20gBrowser.appendChild%28%20document.createElement%28%22tooltip%22%29%20%29%3B%0A%20%20%20%20%20%20%20%20tooltip.style.cssText%20%3D%20%22color%3A%20red%20%21important%3B%20font-weight%3A%20bold%20%21important%3B%20font-size%3A%2014px%20%21important%3B%20-moz-box-orient%3A%20horizontal%3B%20text-align%3A%20center%3B%22%3B%0A%20%20%20%0A%20%20%20%20%20%20%20%20var%20image%20%3D%20tooltip.appendChild%28%20document.createElement%28%22image%22%29%20%29%3B%0A%20%20%20%20%20%20%20%20image.setAttribute%28%22src%22%2C%20self.image%29%3B%0A%20%20%20%0A%20%20%20%20%20%20%20%20var%20label%20%3D%20tooltip.appendChild%28%20document.createElement%28%22label%22%29%29%3B%0A%20%20%20%20%20%20%20%20label.setAttribute%28%22value%22%2C%20%22%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0435%u043D%20%22%20+%20lab%20+%20%22%20%u043F%u0440%u043E%u043A%u0441%u0438%3A%20%22%20+%20sel%29%3B%0A%0A%20%20%20%20%20%20%20%20var%20focused%20%3D%20document.commandDispatcher.focusedWindow%3B%0A%20%20%20%20%20%20%20%20var%20selection%20%3D%20focused.content.document.getSelection%28%29.getRangeAt%280%29.getBoundingClientRect%28%29%3B%0A%20%20%20%20%20%20%20%20var%20posX%20%3D%20focused.mozInnerScreenX%20+%20selection.left%3B%0A%20%20%20%20%20%20%20%20var%20posY%20%3D%20focused.mozInnerScreenY%20+%20selection.bottom%20-%205%3B%20%20%20%0A%0A%20%20%20%20%20%20%20%20tooltip.showPopup%28gBrowser%2C%20posX%2C%20posY%29%3B%0A%20%20%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20gBrowser.removeChild%28tooltip%29%2C%203000%29%3B%0A%20%20%20%20%20%7D%3B%0A%20%20%20%20%20showTooltip%28%29%3B%20%20%20%20%0A%20%20%7D%3B%0A%20%20%20%0A%7D%29%28document.getElementById%28%22contentAreaContextMenu%22%29%29%3B%20%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

bunda1
Спасибо. В подсказке не исправили.

_zt пишет

bunda1
Спасибо. В подсказке не исправили.

Выделить код

Код:

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%3EProxy%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAAYOQAAWJ2kADh1fAAAEKAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAEEJBE4ULQ+fZ38ea/H/muhuv8gW3ztAxclewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLNlO7PH+n/3Sgu/281eP9zuHr/mWZuP4XXon/ABAeZwAAAAAAAAAAAQEBAQAAAAAZGBoTKScsLyYkKjErJSgnIC8/XgZQgP9BcZb8b5q3/oiux/+qx9r/a5Ow+zFtlv8PRWrGAAACAAEBAQMHBwcbAAAAD2BeYn769/3/4eDm/Onh5v+DnrX/A0t9/j1vlv+FqMH/lrfN/7rS4f9+pL3+M26X/xJYhu0DEiMdAAAAAAEBAQEAAAABBgUGEaSiprbPzNP239fb/4OcsP4aXYr/RHOZ/5Gwx//T5e//mrjO/3KYtv40apP/D0x77AUTIhwhHyMmeXV7mXt4fqJ3dHmce3d+n6eirODMx8r/o6q3/kN4nf92m7n/vtPj/9Hg7P/C1OL/eJq1+jtulv8bSnC7AAEGAF1aYH7//////f39/P//////////////////////////lbHC/3ilvf/K4Oz/2OXv/7nN3f6FqcP/VIiv/AseMT8AAAAAXFtef+LY5/+AT534fU2d+4VXovyKXaf+jGGp/5BlrP+GWKT/ZmGc/4Cduf+ivtD+k7HH/1t/neUTJjhFAAAAAAEBAQJfXmB/3tHl/14giPxcIYr/Zy+S/244mP9yPZv/cj6c/3M9nP9wNpf/YDSP/1k0ivu7tdP/YmNmiAAAAAAEBAQGAAAAAF9eYIDg1Ob/cDqV/HE9mv9/TaT/hler/4tdr/+NXrD/iFms/4JTqP9+SqP/cjqW+9zJ4/9ubW6JAAAAAAMDBAQAAAAAX15ggODU5v94RZz8e0mi/4pcrv+Vabf/nXO9/6J5wf+jfMH/oXq//513u/+NY6z718bh/2pqa4gAAAAABAMEBAAAAABfXWCA4NTm/4VWpfyPY7L/onvA/7GPzP+8ndT/waTY/8Cj1/+6nNL/tZfO/6F9uvvYx+L/ampriAAAAAAEAwQEAAAAAF9eYH/e0uX/n3u5/LKTzP/Bpdf/zrbh/9jC6f/bxuv/2cTp/9O+5P/Qu+H/uJ3L+9jI4f9qaWuHAAAAAAQDBAQAAAAAX15gf97S5P+gfbf5sZPH/LqdzfzCqNT8ybHZ/My12vzKs9n8xq/W/Mav1fywksL418fh/2tqbIkAAAAABAMEBAAAAABZVlt3+fX8/+DU5vzj1un/5tvt/+ne7//r4PH/6t7w/+fb7f/k2Ov/4dPn/9nM4Pv79v//ZGFnfwAAAAADAwQEAAAAABcVGRpZVlt6YF9hgWBgYoBhYWKAYmFigGJiY4BiYmOAYmFigGFhYoBgYGGAX15ggF1aX4AbGR0eAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20Proxy%2C%20%u043E%u0442%2010.10.2016.%0A%0A%0A//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Athis.onclick%20%3De%3D%3E%20%7B%0A%20%20%20%0A%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041B%u041A%u041C%20....%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%0A%20%20%20%20%20%20%20%20menuPopup.showPopup%28self%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%20....%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20%0A%20%20%20%20%20%20%20%20cbu.getPrefs%28%22CB.Proxy.connectionsInTab%22%29%20%3F%20openConnectionsInTab%28%29%20%3A%20openConnections%28%29%3B%0A%7D%3B%0A%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Athis.onmouseover%20%3D%28%29%3D%3E%20%7B%0A%20%20%20var%20arr%20%3D%20%5B%22%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%22%2C%20%22%u0420%u0443%u0447%u043D%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%22%2C%20%22%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0430%u044F%20%u0447%u0435%u0440%u0435%u0437%20URL%22%2C%20%22%22%2C%20%22%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%22%2C%20%22%u0421%u0438%u0441%u0442%u0435%u043C%u043D%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%22%5D%3B%0A%20%20%20var%20str%20%3D%20arr.map%28%28m%2C%20i%29%3D%3E%20%28cbu.getPrefs%28%22network.proxy.type%22%29%20%3D%3D%20i%20%3F%20%22%u25CF%22%20%3A%20%22%20%20%22%29%20+%20m%29.filter%28m%3D%3E%20/%5CS/.test%28m%29%29.join%28%22%5Cn%22%29%3B%0A%20%20%20%20%20%0A%20%20%20this.tooltipText%20%3D%20%22Proxy%22%20%0A%20%20%20%20%20%20+%20%22%5Cn%22%20+%20str%0A%20%20%20%20%20%20+%20%22%5Cn%5Cn%u041B%3A%20M%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%20%5Cn%u0421%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%22%0A%20%20%20%20%20%20+%20%22%5Cn%5Cn%u0422%u0435%u043A%u0443%u0449%u0438%u0435%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%3A%22%20%0A%20%20%20%20%20%20+%20%22%5CnIP%3A%20%22%20+%20Services.prefs.getComplexValue%28%22network.proxy.http%22%2C%20Ci.nsISupportsString%29.data%0A%20%20%20%20%20%20+%20%22%5Cn%u041F%u043E%u0440%u0442%3A%20%22%20+%20cbu.getPrefs%28%22network.proxy.http_port%22%29%0A%20%20%20%20%20%20+%20%22%5CnURL%3A%20%22%20+%20Services.prefs.getComplexValue%28%22network.proxy.autoconfig_url%22%2C%20Ci.nsISupportsString%29.data%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%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%7D%3B%0A%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Avar%20array%20%3D%20%5B%0A%20%20%20%7B%20label%3A%20%22%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%22%2C%20value%3A%200%2C%20radio%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u0420%u0443%u0447%u043D%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0441%u0435%u0440%u0432%u0438%u0441%u0430%20%u043F%u0440%u043E%u043A%u0441%u0438%3A%22%2C%20value%3A%201%2C%20radio%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22URL%20%u0430%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u043E%u0439%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u0441%u0435%u0440%u0432%u0438%u0441%u0430%20%u043F%u0440%u043E%u043A%u0441%u0438%22%2C%20value%3A%202%2C%20radio%3A%20%27%27%7D%2C%20%0A%20%20%20%7B%20label%3A%20%22%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0438%20%u043E%u043F%u0440%u0435%u0434%u0435%u043B%u044F%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0434%u043B%u044F%20%u044D%u0442%u043E%u0439%20%u0441%u0435%u0442%u0438%22%2C%20value%3A%204%2C%20radio%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u0418%u0441%u043F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u0442%u044C%20%u0441%u0438%u0441%u0442%u0435%u043C%u043D%u044B%u0435%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%22%2C%20value%3A%205%2C%20radio%3A%20%27%27%7D%2C%20%0A%20%20%20%7B%20separator%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u0414%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043E%u043C%20%u043C%u0435%u043D%u044E%22%2C%20value%3A%20%27CB.Proxy.inContextMenu%27%2C%20checkbox%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u041E%u0442%u043A%u0440%u044B%u0432%u0430%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u043A%u0430%u043A%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%22%2C%20value%3A%20%27CB.Proxy.connectionsInTab%27%2C%20checkbox%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u043D%u0430%20%u0440%u0435%u0436%u0438%u043C%20%27%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%27%20%u043F%u0440%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0438%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%22%2C%20value%3A%20%27CB.Proxy.reset%27%2C%20checkbox%3A%20%27%27%7D%20%20%20%20%0A%5D%3B%0Avar%20menuPopup%20%3D%20self.appendChild%28%20document.createElement%28%22menupopup%22%29%20%29%3B%20%20%0Aarray.forEach%28m%3D%3E%20%7B%0A%20%20%20if%20%28%20%22separator%22%20in%20m%20%29%20%7B%20menuPopup.appendChild%28%20document.createElement%28%22menuseparator%22%29%20%29%3B%20return%20%7D%3B%0A%20%20%20var%20mItem%20%3D%20menuPopup.appendChild%28document.createElement%28%22menuitem%22%29%29%0A%20%20%20mItem.setAttribute%28%22label%22%2C%20m.label%29%3B%0A%0A%20%20%20if%20%28%20%22radio%22%20in%20m%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20mItem.setAttribute%28%22type%22%2C%20%22radio%22%29%3B%0A%20%20%20%20%20%20%20%20mItem.setAttribute%28%27checked%27%2C%20cbu.getPrefs%28%22network.proxy.type%22%29%20%3D%3D%20m.value%29%3B%0A%20%20%20%20%20%20%20%20mItem.onclick%20%3D%28%29%3D%3E%20cbu.setPrefs%28%22network.proxy.type%22%2C%20m.value%29%3B%20%20%0A%20%20%20%20%20%20%20%20%7D%20%20%0A%20%20%20if%20%28%20%22checkbox%22%20in%20m%20%29%20%7B%0A%20%20%20%20%20%20%20%20mItem.setAttribute%28%27type%27%2C%20%27checkbox%27%29%3B%0A%20%20%20%20%20%20%20%20mItem.setAttribute%28%27checked%27%2C%20cbu.getPrefs%28m.value%29%20%29%3B%0A%20%20%20%20%20%20%20%20mItem.onclick%20%3D%28%29%3D%3E%20cbu.setPrefs%28m.value%2C%20%21cbu.getPrefs%28m.value%29%29%3B%20%20%0A%20%20%20%20%20%20%20%20%7D%0A%7D%29%3B%0AmenuPopup.setAttribute%28%22onclick%22%2C%20%22event.stopPropagation%28%29%22%29%3B%0A%0A%0A%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043E%u043A%u043D%u0435%20...................%20%20%0Afunction%20openConnections%28%29%20%7B%0A%20%20%20self.win%20%26%26%20self.win.close%28%29%3B%0A%20%20%20self.win%20%3D%20openDialog%28%22chrome%3A//browser/content/preferences/connection.xul%22%2C%20%22Proxy%22%2C%20%22centerscreen%22%29%3B%0A%20%20%20%0A%20%20%20//%20%u0434%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%20%22prefwindow%22%0A%20%20%20self.win.addEventListener%28%22load%22%2C%20function%20f%28e%29%20%7B%0A%20%20%20%20%20%20%20this.removeEventListener%28%22load%22%2C%20f%2C%20true%29%3B%20%0A%20%20%20%20%20%20%20e.target.documentElement.setAttribute%28%22type%22%2C%20%22prefwindow%22%29%3B%0A%20%20%20%7D%2C%20true%29%3B%0A%0A%20%20%20//%20%u0437%u0430%u043A%u0440%u044B%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u043F%u043E%20%u043A%u043B%u0438%u043A%u0443%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%0A%20%20%20gBrowser.addEventListener%28%22click%22%2C%20function%20c%28%29%20%7B%0A%20%20%20%20%20%20this.removeEventListener%28%22click%22%2C%20c%29%3B%0A%20%20%20%20%20%20try%20%7B%20self.win.close%28%29%20%7D%20catch%28e%29%20%7B%7D%3B%20%0A%20%20%20%7D%2C%20true%29%3B%0A%7D%3B%0A%0A%0A%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20...................%0Afunction%20openConnectionsInTab%28%29%20%7B%20%0A%20%20%20var%20connections%20%3D%20gBrowser.getBrowserForTab%28%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28%22chrome%3A//browser/content/preferences/connection.xul%22%29%20%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20//%20o%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%20%u0436%u0434%u0435%u0442%20%u043F%u043E%u043A%u0430%20%u043E%u0442%u043A%u0440%u043E%u0435%u0442%u0441%u044F%20%u043F%u0440%u043E%u043A%u0441%u0438%2C%20%u0443%u0434%u0430%u043B%u044F%u0435%u0442%20%u0441%u0435%u0431%u044F%20%u0438%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%0A%20%20%20connections.addEventListener%28%22pageshow%22%2C%20function%20c%28e%29%20%7B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20this.removeEventListener%28e.type%2C%20c%29%3B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20e.originalTarget.documentElement.setAttribute%28%22type%22%2C%20%22prefwindow%22%29%3B%0A%20%20%20%7D%29%20%20%20%0A%7D%3B%0A%0A%0A%0A//%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0438%u0432%u0430%u0442%u044C%20%u043D%u0443%u0436%u043D%u0443%u044E%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u0440%u0438%20%u0441%u0442%u0430%u0440%u0442%u0435%20%u0431%u0430%u0443%u0437%u0435%u0440%u0430%20%u0438%u043B%u0438%20%u043F%u0440%u0438%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%u0445%20%u0432%20%27about%3Aconfig%27%20...................%0Avar%20s%20%3D%20%22network.proxy.type%22%3B%0Afunction%20toggleImage%28%29%20%7B%0A%20%20%20var%20icon%20%3D%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0A%20%20%20switch%28%20cbu.getPrefs%28s%29%20%29%20%7B%0A%20%20%20%20%20%20case%200%3A%20icon.src%20%3D%20self.image%3B%20break%3B%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20case%201%3A%20icon.src%20%3D%20%27data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAA4GQAAnFmkAHQ5fAAQAKAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAQBJBFQOLQ+nX38ecev/mu6of8gfFvtAyUXewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLUza7PKd//3S7oP2849X9zuvh/mW4mf4XiV7/AB4QZwAAAAAAAAAAAQEBAQAAAAAZGhgTKSwnLyYqJDErKCUnID8vXgaAUP9BlnH8b7ea/ojHrv+q2sf/a7CT+zGWbf8PakXGAAIAAAEBAQMHBwcbAAAAD2BiXn76/ff/4ebg/Onm4f+DtZ7/A31L/j2Wb/+Fwaj/ls23/7rh0v9+vaT+M5du/xKGWO0DIxIdAAAAAAEBAQEAAAABBgYFEaSmorbP08z239vX/4OwnP4ail3/RJlz/5HHsP/T7+X/ms64/3K2mP40k2r/D3tM7AUiExwhIx8meXt1mXt+eKJ3eXSce353n6esouDMysf/o7eq/kOdeP92uZv/vuPT/9Hs4P/C4tT/eLWa+juWbv8bcEq7AAYBAF1gWn7//////f39/P//////////////////////////lcKx/3i9pf/K7OD/2O/l/7ndzf6Fw6n/VK+I/AsxHj8AAAAAXF5bf+Ln2P+AnU/4fZ1N+4WiV/yKp13+jKlh/5CsZf+GpFj/Zpxh/4C5nf+i0L7+k8ex/1udf+UTOCZFAAAAAAEBAQJfYF5/3uXR/16IIPxciiH/Z5Iv/26YOP9ymz3/cpw+/3OcPf9wlzb/YI80/1mKNPu707X/YmZjiAAAAAAEBAQGAAAAAF9gXoDg5tT/cJU6/HGaPf9/pE3/hqtX/4uvXf+NsF7/iKxZ/4KoU/9+o0r/cpY6+9zjyf9ubm2JAAAAAAMEAwQAAAAAX2BegODm1P94nEX8e6JJ/4quXP+Vt2n/nb1z/6LBef+jwXz/ob96/527d/+NrGP71+HG/2praogAAAAABAQDBAAAAABfYF2A4ObU/4WlVvyPsmP/osB7/7HMj/+81J3/wdik/8DXo/+60pz/tc6X/6G6ffvY4sf/amtqiAAAAAAEBAMEAAAAAF9gXn/e5dL/n7l7/LLMk//B16X/zuG2/9jpwv/b68b/2enE/9Pkvv/Q4bv/uMud+9jhyP9qa2mHAAAAAAQEAwQAAAAAX2Bef97k0v+gt335sceT/LrNnfzC1Kj8ydmx/MzatfzK2bP8xtav/MbVr/ywwpL41+HH/2tsaokAAAAABAQDBAAAAABZW1Z3+fz1/+Dm1Pzj6db/5u3b/+nv3v/r8eD/6vDe/+ft2//k69j/4efT/9ngzPv7//b/ZGdhfwAAAAADBAMEAAAAABcZFRpZW1Z6YGFfgWBiYIBhYmGAYmJhgGJjYoBiY2KAYmJhgGFiYYBgYWCAX2BegF1fWoAbHRkeAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%27%3B%20break%3B%0A%20%20%20%20%20%20case%202%3A%20icon.src%20%3D%20%27data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAAcHQAAYGGkAEBBfAAEBKAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABAQEAAgICAAICAgACAgMBAQEAAAEBJAA6OrQAf3/8ALCw/gCiov8AXl7tABkZewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMAOTm7AIOD/wCjo/0A1tb9AOHh/gCcnP4AY2P/ABISZwAAAAAAAAAAAAEBAQAAAAAAGBgTACgoLwAmJjEAJiYnADIyXgBWVv8Adnb8AJ2d/gCxsf8Aycn/AJeX+wBycv8ASkrGAAACAAABAQMABwcbAAAADwBfX34A+fn/AOHh/ADj4/8AoaH/AFJS/gB1df8Aq6v/ALm5/wDT0/8Ap6f+AHNz/wBeXu0AFRUdAAAAAAABAQEAAAABAAUFEQCjo7YAzs72ANnZ/wCfn/4AY2P/AHl5/wCzs/8A5ub/ALu7/wCcnP4AcHD/AFNT7AAVFRwAICAmAHd3mQB6eqIAdXWcAHl5nwClpeAAyMj/AK2t/gB9ff8An5//ANXV/wDh4f8A1tb/AJ6e+gB0dP8AUFC7AAEGAABcXH4A////AP39/AD///8A////AP///wD///8A////ALOz/wCnp/8A4eH/AObm/wDPz/4ArKz/AI2N/AAhIT8AAAAAAFxcfwDd3f8Aa2v4AGpq+wBycvwAeHj+AHt7/wB/f/8Ac3P/AHNz/wCiov8AwMD+ALS0/wCEhOUAKSlFAAAAAAABAQIAXl5/ANjY/wBGRvwARkb/AFJS/wBaWv8AX1//AF9f/wBfX/8AWVn/AFRU/wBRUfsAvr7/AGNjiAAAAAAABAQGAAAAAABeXoAA2tr/AFtb/ABeXv8AbGz/AHV1/wB6ev8Ae3v/AHd3/wBxcf8Aamr/AFtb+wDS0v8AbW2JAAAAAAADAwQAAAAAAF5egADa2v8AZGT8AGlp/wB5ef8AhYX/AI2N/wCTk/8AlJT/AJKS/wCPj/8AfX37AM/P/wBqaogAAAAAAAMDBAAAAAAAXl6AANra/wBycvwAf3//AJOT/wClpf8AsLD/ALa2/wC1tf8Ar6//AKqq/wCTk/sA0ND/AGpqiAAAAAAAAwMEAAAAAABeXn8A2dn/AJGR/ACnp/8At7f/AMXF/wDQ0P8A09P/ANHR/wDLy/8AyMj/AK2t+wDR0f8AaWmHAAAAAAADAwQAAAAAAF5efwDY2P8AkpL5AKWl/ACurvwAuLj8AL+//ADCwvwAwMD8AL29/AC8vPwAo6P4ANDQ/wBqaokAAAAAAAMDBAAAAAAAV1d3APf3/wDa2vwA3d3/AOHh/wDk5P8A5ub/AOTk/wDh4f8A39//ANra/wDT0/sA+fn/AGNjfwAAAAAAAwMEAAAAAAAWFhoAV1d6AF9fgQBgYIAAYWGAAGFhgABiYoAAYmKAAGFhgABhYYAAYGCAAF5egABbW4AAGhoeAAAAAAABAQEAAAAA/oOAQeEAgEH6AIBBoACAQQAAAEGAAABBAACAQQAAgEEAAQBBAAKAQQACgEEAAoBBAAKAQQACgEEAAoBBAAKAQQACgEE%3D%27%3B%20break%3B%0A%20%20%20%20%20%20default%3Aicon.src%20%3D%20self.image%3B%20%0A%20%20%20%7D%0A%7D%3B%20%20%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28%28%29%3D%3E%20gPrefService.removeObserver%28s%2C%20toggleImage%29%20%29%3B%0A%0A%0A%0A//%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u043D%u0430%20%u0440%u0435%u0436%u0438%u043C%20%27%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%27%20%u043F%u0440%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0438%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20...................%0Avar%20switchOffProxy%20%3D%20%7B%0A%20%20%20%20observe%3A%20function%28subject%2C%20topic%2C%20data%29%20%7B%0A%20%20%20%20%20%20%20if%20%28%20data%20%3D%3D%20%22shutdown%22%20%26%26%20cbu.getPrefs%28%22CB.Proxy.reset%22%29%20%29%20cbu.setPrefs%28%22network.proxy.type%22%2C%200%29%3B%20%20%0A%20%20%20%20%7D%0A%7D%3B%0AServices.obs.addObserver%28switchOffProxy%2C%20%22quit-application%22%2C%20false%29%3B%0A%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0435%u043C%20%u043C%u0435%u043D%u044E%20%u0434%u043B%u044F%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u043C%20%u043C%u0435%u043D%u044E%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20...................%0A%28%28contextMenu%29%3D%3E%20%7B%0A%0A%20%20//%20%u0441%u043E%u0437%u0434%u0430%u0442%u044C%20%u043D%u043E%u0432%u044B%u0439%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E%0A%20%20var%20menuitem%20%3D%20document.createElement%28%22menuitem%22%29%3B%20%20%20%20%20%20%0A%20%20menuitem.setAttribute%28%22label%22%2C%20%22%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u043F%u0440%u043E%u043A%u0441%u0438%22%29%3B%20%0A%20%20menuitem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%0A%20%20menuitem.setAttribute%28%22image%22%2C%20self.image%29%3B%0A%20%20menuitem.onclick%20%3D%28%29%3D%3E%20addNewProxy%28%29%3B%0A%20%20contextMenu.appendChild%28menuitem%29%3B%20//%20%u043A%u0430%u043A%20%u043F%u043E%u0441%u043B%u0435%u0434%u043D%u0438%u0439%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E%0A%20%20addDestructor%28%28%29%3D%3E%20menuitem.remove%28%29%20%29%3B%0A%20%20%0A%20%20//%20%u0443%u0441%u0442%u0430%u043D%u0430%u0432%u043B%u0438%u0432%u0430%u0435%u043C%20%u0433%u0434%u0435%20%u043F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E%20%0A%20%20addEventListener%28%22popupshowing%22%2C%20%28%29%3D%3E%7B%0A%20%20%20%20%20menuitem.hidden%20%3D%20%21cbu.getPrefs%28%22CB.Proxy.inContextMenu%22%29%20%7C%7C%20%21gContextMenu.isContentSelected%3B%20//%20%21gContextMenu.isTextSelected%3B%0A%20%20%7D%2C%20false%2C%20contextMenu%29%3B%0A%20%20%0A%20%20%0A%20%20//%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%0A%20%20function%20addNewProxy%28sel%29%20%7B%20%20%0A%20%20%20%20%20var%20selection%20%3D%20gBrowser.contentDocument.defaultView.getSelection%28%29.toString%28%29%3B%0A%20%20%20%20%20var%20sel%20%3D%20%28%20sel%20%3D%3D%20undefined%20%29%20%3F%20selection%20%3A%20sel.toString%28%29%3B%0A%20%20%20%20%20sel%20%3D%20sel.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%20%22%22%29%3B%20//%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%2C%20%u0441%u043B%u0435%u0432%u0430%20%u0438%20%u0441%u043F%u0440%u0430%u0432%u0430%20%u043E%u0442%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%20%20%20%20%20sel%20%3D%20sel.replace%28/%5Cs+/g%2C%22%3A%22%29%3B%20//%20%u0437%u0430%u043C%u0435%u043D%u0438%u0442%u044C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%20%u0432%u043D%u0443%u0442%u0440%u0438%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%0A%20%20%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u043F%u043E%u0440%u0442%20...%0A%20%20%20%20%20if%20%28%20sel.length%20%3C%206%20%26%26%20isFinite%28sel%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20sel%20%3D%20sel.replace%28/%3A/g%2C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u043F%u043E%u0440%u0442%27%3B%0A%20%20%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.http_port%22%2C%20+sel%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u0430%u0434%u0440%u0435%u0441%20...%0A%20%20%20%20%20if%20%28%20sel.length%20%3E%205%20%26%26%20%21/%3A/.test%28sel%29%20%26%26%20sel.split%28%22.%22%29.length%20%3D%3D%204%20%29%20%7B%20%20%20%0A%20%20%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u0430%u0434%u0440%u0435%u0441%27%3B%0A%20%20%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.http%22%2C%20convertFromUnicode%28%22UTF-8%22%2C%20sel%29%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0430%u0434%u0440%u0435%u0441%20%u0438%20%u043F%u043E%u0440%u0442%20...%20%20%20%20%0A%20%20%20%20%20if%20%28%20sel.length%20%3E%205%20%26%26%20/%3A/.test%28sel%29%20%26%26%20sel.split%28%22%3A%22%29.length%20%3D%3D%202%20%26%26%20sel.split%28%22.%22%29.length%20%3D%3D%204%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u0430%u0434%u0440%u0435%u0441%20%u0438%20%u043F%u043E%u0440%u0442%27%3B%0A%20%20%20%20%20%20%20%20%20%20var%20array%20%3D%20sel.split%28%22%3A%22%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20array.forEach%28%28str%29%3D%3E%20addNewProxy%28str%29%20%29%3B%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%0A%0A%20%20%20%20%20if%20%28%20lab%20%3D%3D%20undefined%20%29%20return%3B%0A%0A%20%20%20%20%20//%20%u0432%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0440%u044F%u0434%u043E%u043C%20%u0441%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u043C%20%u0442%u0435%u043A%u0441%u0442%u043E%u043C%20...%20%20%20%20%20%0A%20%20%20%20%20function%20showTooltip%28%29%20%7B%0A%20%20%20%20%20%20%20%20var%20tooltip%20%3D%20gBrowser.appendChild%28%20document.createElement%28%22tooltip%22%29%20%29%3B%0A%20%20%20%20%20%20%20%20tooltip.style.cssText%20%3D%20%22color%3A%20red%20%21important%3B%20font-weight%3A%20bold%20%21important%3B%20font-size%3A%2014px%20%21important%3B%20-moz-box-orient%3A%20horizontal%3B%20text-align%3A%20center%3B%22%3B%0A%20%20%20%0A%20%20%20%20%20%20%20%20var%20image%20%3D%20tooltip.appendChild%28%20document.createElement%28%22image%22%29%20%29%3B%0A%20%20%20%20%20%20%20%20image.setAttribute%28%22src%22%2C%20self.image%29%3B%0A%20%20%20%0A%20%20%20%20%20%20%20%20var%20label%20%3D%20tooltip.appendChild%28%20document.createElement%28%22label%22%29%29%3B%0A%20%20%20%20%20%20%20%20label.setAttribute%28%22value%22%2C%20%22%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0435%u043D%20%22%20+%20lab%20+%20%22%20%u043F%u0440%u043E%u043A%u0441%u0438%3A%20%22%20+%20sel%29%3B%0A%0A%20%20%20%20%20%20%20%20var%20focused%20%3D%20document.commandDispatcher.focusedWindow%3B%0A%20%20%20%20%20%20%20%20var%20selection%20%3D%20focused.content.document.getSelection%28%29.getRangeAt%280%29.getBoundingClientRect%28%29%3B%0A%20%20%20%20%20%20%20%20var%20posX%20%3D%20focused.mozInnerScreenX%20+%20selection.left%3B%0A%20%20%20%20%20%20%20%20var%20posY%20%3D%20focused.mozInnerScreenY%20+%20selection.bottom%20-%205%3B%20%20%20%0A%0A%20%20%20%20%20%20%20%20tooltip.showPopup%28gBrowser%2C%20posX%2C%20posY%29%3B%0A%20%20%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20gBrowser.removeChild%28tooltip%29%2C%203000%29%3B%0A%20%20%20%20%20%7D%3B%0A%20%20%20%20%20showTooltip%28%29%3B%20%20%20%20%0A%20%20%7D%3B%0A%20%20%20%0A%7D%29%28document.getElementById%28%22contentAreaContextMenu%22%29%29%3B%20%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

bunda1
При смене типа прокси, не через меню кнопки, в подсказке отмеченный пункт меняется, а в меню кнопки нет. Это можно как ни будь поправить? Последний вариант кнопки.

_zt пишет

bunda1
При смене типа прокси, не через меню кнопки, в подсказке отмеченный пункт меняется, а в меню кнопки нет. Это можно как ни будь поправить? Последний вариант кнопки.

Выделить код

Код:

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%3EProxy%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAAYOQAAWJ2kADh1fAAAEKAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAEEJBE4ULQ+fZ38ea/H/muhuv8gW3ztAxclewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLNlO7PH+n/3Sgu/281eP9zuHr/mWZuP4XXon/ABAeZwAAAAAAAAAAAQEBAQAAAAAZGBoTKScsLyYkKjErJSgnIC8/XgZQgP9BcZb8b5q3/oiux/+qx9r/a5Ow+zFtlv8PRWrGAAACAAEBAQMHBwcbAAAAD2BeYn769/3/4eDm/Onh5v+DnrX/A0t9/j1vlv+FqMH/lrfN/7rS4f9+pL3+M26X/xJYhu0DEiMdAAAAAAEBAQEAAAABBgUGEaSiprbPzNP239fb/4OcsP4aXYr/RHOZ/5Gwx//T5e//mrjO/3KYtv40apP/D0x77AUTIhwhHyMmeXV7mXt4fqJ3dHmce3d+n6eirODMx8r/o6q3/kN4nf92m7n/vtPj/9Hg7P/C1OL/eJq1+jtulv8bSnC7AAEGAF1aYH7//////f39/P//////////////////////////lbHC/3ilvf/K4Oz/2OXv/7nN3f6FqcP/VIiv/AseMT8AAAAAXFtef+LY5/+AT534fU2d+4VXovyKXaf+jGGp/5BlrP+GWKT/ZmGc/4Cduf+ivtD+k7HH/1t/neUTJjhFAAAAAAEBAQJfXmB/3tHl/14giPxcIYr/Zy+S/244mP9yPZv/cj6c/3M9nP9wNpf/YDSP/1k0ivu7tdP/YmNmiAAAAAAEBAQGAAAAAF9eYIDg1Ob/cDqV/HE9mv9/TaT/hler/4tdr/+NXrD/iFms/4JTqP9+SqP/cjqW+9zJ4/9ubW6JAAAAAAMDBAQAAAAAX15ggODU5v94RZz8e0mi/4pcrv+Vabf/nXO9/6J5wf+jfMH/oXq//513u/+NY6z718bh/2pqa4gAAAAABAMEBAAAAABfXWCA4NTm/4VWpfyPY7L/onvA/7GPzP+8ndT/waTY/8Cj1/+6nNL/tZfO/6F9uvvYx+L/ampriAAAAAAEAwQEAAAAAF9eYH/e0uX/n3u5/LKTzP/Bpdf/zrbh/9jC6f/bxuv/2cTp/9O+5P/Qu+H/uJ3L+9jI4f9qaWuHAAAAAAQDBAQAAAAAX15gf97S5P+gfbf5sZPH/LqdzfzCqNT8ybHZ/My12vzKs9n8xq/W/Mav1fywksL418fh/2tqbIkAAAAABAMEBAAAAABZVlt3+fX8/+DU5vzj1un/5tvt/+ne7//r4PH/6t7w/+fb7f/k2Ov/4dPn/9nM4Pv79v//ZGFnfwAAAAADAwQEAAAAABcVGRpZVlt6YF9hgWBgYoBhYWKAYmFigGJiY4BiYmOAYmFigGFhYoBgYGGAX15ggF1aX4AbGR0eAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20Proxy%2C%20%u043E%u0442%2010.10.2016.%0A%0A%0A//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Athis.onclick%20%3De%3D%3E%20%7B%0A%20%20%20%0A%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041B%u041A%u041C%20....%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29openMenuPopup%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%20....%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20%0A%20%20%20%20%20%20%20%20cbu.getPrefs%28%22CB.Proxy.connectionsInTab%22%29%20%3F%20openConnectionsInTab%28%29%20%3A%20openConnections%28%29%3B%0A%7D%3B%0A%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Athis.onmouseover%20%3D%28%29%3D%3E%20%7B%0A%20%20%20var%20arr%20%3D%20%5B%22%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%22%2C%20%22%u0420%u0443%u0447%u043D%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%22%2C%20%22%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0430%u044F%20%u0447%u0435%u0440%u0435%u0437%20URL%22%2C%20%22%22%2C%20%22%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%22%2C%20%22%u0421%u0438%u0441%u0442%u0435%u043C%u043D%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%22%5D%3B%0A%20%20%20var%20str%20%3D%20arr.map%28%28m%2C%20i%29%3D%3E%20%28cbu.getPrefs%28%22network.proxy.type%22%29%20%3D%3D%20i%20%3F%20%22%u25CF%22%20%3A%20%22%20%20%22%29%20+%20m%29.filter%28m%3D%3E%20/%5CS/.test%28m%29%29.join%28%22%5Cn%22%29%3B%0A%20%20%20%20%20%0A%20%20%20this.tooltipText%20%3D%20%22Proxy%22%20%0A%20%20%20%20%20%20+%20%22%5Cn%22%20+%20str%0A%20%20%20%20%20%20+%20%22%5Cn%5Cn%u041B%3A%20M%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%20%5Cn%u0421%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%22%0A%20%20%20%20%20%20+%20%22%5Cn%5Cn%u0422%u0435%u043A%u0443%u0449%u0438%u0435%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%3A%22%20%0A%20%20%20%20%20%20+%20%22%5CnIP%3A%20%22%20+%20Services.prefs.getComplexValue%28%22network.proxy.http%22%2C%20Ci.nsISupportsString%29.data%0A%20%20%20%20%20%20+%20%22%5Cn%u041F%u043E%u0440%u0442%3A%20%22%20+%20cbu.getPrefs%28%22network.proxy.http_port%22%29%0A%20%20%20%20%20%20+%20%22%5CnURL%3A%20%22%20+%20Services.prefs.getComplexValue%28%22network.proxy.autoconfig_url%22%2C%20Ci.nsISupportsString%29.data%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%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%7D%3B%0A%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Avar%20array%20%3D%20%5B%0A%20%20%20%7B%20label%3A%20%22%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%22%2C%20value%3A%200%2C%20radio%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u0420%u0443%u0447%u043D%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0441%u0435%u0440%u0432%u0438%u0441%u0430%20%u043F%u0440%u043E%u043A%u0441%u0438%3A%22%2C%20value%3A%201%2C%20radio%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22URL%20%u0430%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u043E%u0439%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u0441%u0435%u0440%u0432%u0438%u0441%u0430%20%u043F%u0440%u043E%u043A%u0441%u0438%22%2C%20value%3A%202%2C%20radio%3A%20%27%27%7D%2C%20%0A%20%20%20%7B%20label%3A%20%22%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0438%20%u043E%u043F%u0440%u0435%u0434%u0435%u043B%u044F%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0434%u043B%u044F%20%u044D%u0442%u043E%u0439%20%u0441%u0435%u0442%u0438%22%2C%20value%3A%204%2C%20radio%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u0418%u0441%u043F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u0442%u044C%20%u0441%u0438%u0441%u0442%u0435%u043C%u043D%u044B%u0435%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%22%2C%20value%3A%205%2C%20radio%3A%20%27%27%7D%2C%20%0A%20%20%20%7B%20separator%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u0414%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043E%u043C%20%u043C%u0435%u043D%u044E%22%2C%20value%3A%20%27CB.Proxy.inContextMenu%27%2C%20checkbox%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u041E%u0442%u043A%u0440%u044B%u0432%u0430%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u043A%u0430%u043A%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%22%2C%20value%3A%20%27CB.Proxy.connectionsInTab%27%2C%20checkbox%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u043D%u0430%20%u0440%u0435%u0436%u0438%u043C%20%27%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%27%20%u043F%u0440%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0438%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%22%2C%20value%3A%20%27CB.Proxy.reset%27%2C%20checkbox%3A%20%27%27%7D%20%20%20%20%0A%5D%3B%0Avar%20menuPopup%20%3D%20self.appendChild%28%20document.createElement%28%22menupopup%22%29%20%29%3B%0AmenuPopup.setAttribute%28%22onclick%22%2C%20%22event.stopPropagation%28%29%22%29%3B%0A%0Afunction%20openMenuPopup%28%29%20%7B%0A%20%20%20menuPopup.textContent%20%3D%20%22%22%3B%0A%20%20%0A%20%20%20array.forEach%28m%3D%3E%20%7B%0A%20%20%20%20%20%20if%20%28%20%22separator%22%20in%20m%20%29%20%7B%20menuPopup.appendChild%28%20document.createElement%28%22menuseparator%22%29%20%29%3B%20return%20%7D%3B%0A%20%20%20%20%20%20var%20mItem%20%3D%20menuPopup.appendChild%28document.createElement%28%22menuitem%22%29%29%0A%20%20%20%20%20%20mItem.setAttribute%28%22label%22%2C%20m.label%29%3B%0A%0A%20%20%20%20%20%20if%20%28%20%22radio%22%20in%20m%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20mItem.setAttribute%28%22type%22%2C%20%22radio%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20mItem.setAttribute%28%27checked%27%2C%20cbu.getPrefs%28%22network.proxy.type%22%29%20%3D%3D%20m.value%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20mItem.onclick%20%3D%28%29%3D%3E%20cbu.setPrefs%28%22network.proxy.type%22%2C%20m.value%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%0A%20%20%20%20%20%20if%20%28%20%22checkbox%22%20in%20m%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20mItem.setAttribute%28%27type%27%2C%20%27checkbox%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20mItem.setAttribute%28%27checked%27%2C%20cbu.getPrefs%28m.value%29%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20mItem.onclick%20%3D%28%29%3D%3E%20cbu.setPrefs%28m.value%2C%20%21cbu.getPrefs%28m.value%29%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%7D%29%3B%0A%20%20%20menuPopup.showPopup%28self%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%7D%3B%0A%0A%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043E%u043A%u043D%u0435%20...................%20%20%0Afunction%20openConnections%28%29%20%7B%0A%20%20%20self.win%20%26%26%20self.win.close%28%29%3B%0A%20%20%20self.win%20%3D%20openDialog%28%22chrome%3A//browser/content/preferences/connection.xul%22%2C%20%22Proxy%22%2C%20%22centerscreen%22%29%3B%0A%20%20%20%0A%20%20%20//%20%u0434%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%20%22prefwindow%22%0A%20%20%20self.win.addEventListener%28%22load%22%2C%20function%20f%28e%29%20%7B%0A%20%20%20%20%20%20%20this.removeEventListener%28%22load%22%2C%20f%2C%20true%29%3B%20%0A%20%20%20%20%20%20%20e.target.documentElement.setAttribute%28%22type%22%2C%20%22prefwindow%22%29%3B%0A%20%20%20%7D%2C%20true%29%3B%0A%0A%20%20%20//%20%u0437%u0430%u043A%u0440%u044B%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u043F%u043E%20%u043A%u043B%u0438%u043A%u0443%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%0A%20%20%20gBrowser.addEventListener%28%22click%22%2C%20function%20c%28%29%20%7B%0A%20%20%20%20%20%20this.removeEventListener%28%22click%22%2C%20c%29%3B%0A%20%20%20%20%20%20try%20%7B%20self.win.close%28%29%20%7D%20catch%28e%29%20%7B%7D%3B%20%0A%20%20%20%7D%2C%20true%29%3B%0A%7D%3B%0A%0A%0A%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20...................%0Afunction%20openConnectionsInTab%28%29%20%7B%20%0A%20%20%20var%20connections%20%3D%20gBrowser.getBrowserForTab%28%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28%22chrome%3A//browser/content/preferences/connection.xul%22%29%20%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20//%20o%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%20%u0436%u0434%u0435%u0442%20%u043F%u043E%u043A%u0430%20%u043E%u0442%u043A%u0440%u043E%u0435%u0442%u0441%u044F%20%u043F%u0440%u043E%u043A%u0441%u0438%2C%20%u0443%u0434%u0430%u043B%u044F%u0435%u0442%20%u0441%u0435%u0431%u044F%20%u0438%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%0A%20%20%20connections.addEventListener%28%22pageshow%22%2C%20function%20c%28e%29%20%7B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20this.removeEventListener%28e.type%2C%20c%29%3B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20e.originalTarget.documentElement.setAttribute%28%22type%22%2C%20%22prefwindow%22%29%3B%0A%20%20%20%7D%29%20%20%20%0A%7D%3B%0A%0A%0A%0A//%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0438%u0432%u0430%u0442%u044C%20%u043D%u0443%u0436%u043D%u0443%u044E%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u0440%u0438%20%u0441%u0442%u0430%u0440%u0442%u0435%20%u0431%u0430%u0443%u0437%u0435%u0440%u0430%20%u0438%u043B%u0438%20%u043F%u0440%u0438%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%u0445%20%u0432%20%27about%3Aconfig%27%20...................%0Avar%20s%20%3D%20%22network.proxy.type%22%3B%0Afunction%20toggleImage%28%29%20%7B%0A%20%20%20var%20icon%20%3D%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0A%20%20%20switch%28%20cbu.getPrefs%28s%29%20%29%20%7B%0A%20%20%20%20%20%20case%200%3A%20icon.src%20%3D%20self.image%3B%20break%3B%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20case%201%3A%20icon.src%20%3D%20%27data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAA4GQAAnFmkAHQ5fAAQAKAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAQBJBFQOLQ+nX38ecev/mu6of8gfFvtAyUXewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLUza7PKd//3S7oP2849X9zuvh/mW4mf4XiV7/AB4QZwAAAAAAAAAAAQEBAQAAAAAZGhgTKSwnLyYqJDErKCUnID8vXgaAUP9BlnH8b7ea/ojHrv+q2sf/a7CT+zGWbf8PakXGAAIAAAEBAQMHBwcbAAAAD2BiXn76/ff/4ebg/Onm4f+DtZ7/A31L/j2Wb/+Fwaj/ls23/7rh0v9+vaT+M5du/xKGWO0DIxIdAAAAAAEBAQEAAAABBgYFEaSmorbP08z239vX/4OwnP4ail3/RJlz/5HHsP/T7+X/ms64/3K2mP40k2r/D3tM7AUiExwhIx8meXt1mXt+eKJ3eXSce353n6esouDMysf/o7eq/kOdeP92uZv/vuPT/9Hs4P/C4tT/eLWa+juWbv8bcEq7AAYBAF1gWn7//////f39/P//////////////////////////lcKx/3i9pf/K7OD/2O/l/7ndzf6Fw6n/VK+I/AsxHj8AAAAAXF5bf+Ln2P+AnU/4fZ1N+4WiV/yKp13+jKlh/5CsZf+GpFj/Zpxh/4C5nf+i0L7+k8ex/1udf+UTOCZFAAAAAAEBAQJfYF5/3uXR/16IIPxciiH/Z5Iv/26YOP9ymz3/cpw+/3OcPf9wlzb/YI80/1mKNPu707X/YmZjiAAAAAAEBAQGAAAAAF9gXoDg5tT/cJU6/HGaPf9/pE3/hqtX/4uvXf+NsF7/iKxZ/4KoU/9+o0r/cpY6+9zjyf9ubm2JAAAAAAMEAwQAAAAAX2BegODm1P94nEX8e6JJ/4quXP+Vt2n/nb1z/6LBef+jwXz/ob96/527d/+NrGP71+HG/2praogAAAAABAQDBAAAAABfYF2A4ObU/4WlVvyPsmP/osB7/7HMj/+81J3/wdik/8DXo/+60pz/tc6X/6G6ffvY4sf/amtqiAAAAAAEBAMEAAAAAF9gXn/e5dL/n7l7/LLMk//B16X/zuG2/9jpwv/b68b/2enE/9Pkvv/Q4bv/uMud+9jhyP9qa2mHAAAAAAQEAwQAAAAAX2Bef97k0v+gt335sceT/LrNnfzC1Kj8ydmx/MzatfzK2bP8xtav/MbVr/ywwpL41+HH/2tsaokAAAAABAQDBAAAAABZW1Z3+fz1/+Dm1Pzj6db/5u3b/+nv3v/r8eD/6vDe/+ft2//k69j/4efT/9ngzPv7//b/ZGdhfwAAAAADBAMEAAAAABcZFRpZW1Z6YGFfgWBiYIBhYmGAYmJhgGJjYoBiY2KAYmJhgGFiYYBgYWCAX2BegF1fWoAbHRkeAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%27%3B%20break%3B%0A%20%20%20%20%20%20case%202%3A%20icon.src%20%3D%20%27data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAAcHQAAYGGkAEBBfAAEBKAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABAQEAAgICAAICAgACAgMBAQEAAAEBJAA6OrQAf3/8ALCw/gCiov8AXl7tABkZewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMAOTm7AIOD/wCjo/0A1tb9AOHh/gCcnP4AY2P/ABISZwAAAAAAAAAAAAEBAQAAAAAAGBgTACgoLwAmJjEAJiYnADIyXgBWVv8Adnb8AJ2d/gCxsf8Aycn/AJeX+wBycv8ASkrGAAACAAABAQMABwcbAAAADwBfX34A+fn/AOHh/ADj4/8AoaH/AFJS/gB1df8Aq6v/ALm5/wDT0/8Ap6f+AHNz/wBeXu0AFRUdAAAAAAABAQEAAAABAAUFEQCjo7YAzs72ANnZ/wCfn/4AY2P/AHl5/wCzs/8A5ub/ALu7/wCcnP4AcHD/AFNT7AAVFRwAICAmAHd3mQB6eqIAdXWcAHl5nwClpeAAyMj/AK2t/gB9ff8An5//ANXV/wDh4f8A1tb/AJ6e+gB0dP8AUFC7AAEGAABcXH4A////AP39/AD///8A////AP///wD///8A////ALOz/wCnp/8A4eH/AObm/wDPz/4ArKz/AI2N/AAhIT8AAAAAAFxcfwDd3f8Aa2v4AGpq+wBycvwAeHj+AHt7/wB/f/8Ac3P/AHNz/wCiov8AwMD+ALS0/wCEhOUAKSlFAAAAAAABAQIAXl5/ANjY/wBGRvwARkb/AFJS/wBaWv8AX1//AF9f/wBfX/8AWVn/AFRU/wBRUfsAvr7/AGNjiAAAAAAABAQGAAAAAABeXoAA2tr/AFtb/ABeXv8AbGz/AHV1/wB6ev8Ae3v/AHd3/wBxcf8Aamr/AFtb+wDS0v8AbW2JAAAAAAADAwQAAAAAAF5egADa2v8AZGT8AGlp/wB5ef8AhYX/AI2N/wCTk/8AlJT/AJKS/wCPj/8AfX37AM/P/wBqaogAAAAAAAMDBAAAAAAAXl6AANra/wBycvwAf3//AJOT/wClpf8AsLD/ALa2/wC1tf8Ar6//AKqq/wCTk/sA0ND/AGpqiAAAAAAAAwMEAAAAAABeXn8A2dn/AJGR/ACnp/8At7f/AMXF/wDQ0P8A09P/ANHR/wDLy/8AyMj/AK2t+wDR0f8AaWmHAAAAAAADAwQAAAAAAF5efwDY2P8AkpL5AKWl/ACurvwAuLj8AL+//ADCwvwAwMD8AL29/AC8vPwAo6P4ANDQ/wBqaokAAAAAAAMDBAAAAAAAV1d3APf3/wDa2vwA3d3/AOHh/wDk5P8A5ub/AOTk/wDh4f8A39//ANra/wDT0/sA+fn/AGNjfwAAAAAAAwMEAAAAAAAWFhoAV1d6AF9fgQBgYIAAYWGAAGFhgABiYoAAYmKAAGFhgABhYYAAYGCAAF5egABbW4AAGhoeAAAAAAABAQEAAAAA/oOAQeEAgEH6AIBBoACAQQAAAEGAAABBAACAQQAAgEEAAQBBAAKAQQACgEEAAoBBAAKAQQACgEEAAoBBAAKAQQACgEE%3D%27%3B%20break%3B%0A%20%20%20%20%20%20default%3Aicon.src%20%3D%20self.image%3B%20%0A%20%20%20%7D%0A%7D%3B%20%20%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28%28%29%3D%3E%20gPrefService.removeObserver%28s%2C%20toggleImage%29%20%29%3B%0A%0A%0A%0A//%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u043D%u0430%20%u0440%u0435%u0436%u0438%u043C%20%27%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%27%20%u043F%u0440%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0438%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20...................%0Avar%20switchOffProxy%20%3D%20%7B%0A%20%20%20%20observe%3A%20function%28subject%2C%20topic%2C%20data%29%20%7B%0A%20%20%20%20%20%20%20if%20%28%20data%20%3D%3D%20%22shutdown%22%20%26%26%20cbu.getPrefs%28%22CB.Proxy.reset%22%29%20%29%20cbu.setPrefs%28%22network.proxy.type%22%2C%200%29%3B%20%20%0A%20%20%20%20%7D%0A%7D%3B%0AServices.obs.addObserver%28switchOffProxy%2C%20%22quit-application%22%2C%20false%29%3B%0A%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0435%u043C%20%u043C%u0435%u043D%u044E%20%u0434%u043B%u044F%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u043C%20%u043C%u0435%u043D%u044E%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20...................%0A%28%28contextMenu%29%3D%3E%20%7B%0A%0A%20%20//%20%u0441%u043E%u0437%u0434%u0430%u0442%u044C%20%u043D%u043E%u0432%u044B%u0439%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E%0A%20%20var%20menuitem%20%3D%20document.createElement%28%22menuitem%22%29%3B%20%20%20%20%20%20%0A%20%20menuitem.setAttribute%28%22label%22%2C%20%22%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u043F%u0440%u043E%u043A%u0441%u0438%22%29%3B%20%0A%20%20menuitem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%0A%20%20menuitem.setAttribute%28%22image%22%2C%20self.image%29%3B%0A%20%20menuitem.onclick%20%3D%28%29%3D%3E%20addNewProxy%28%29%3B%0A%20%20contextMenu.appendChild%28menuitem%29%3B%20//%20%u043A%u0430%u043A%20%u043F%u043E%u0441%u043B%u0435%u0434%u043D%u0438%u0439%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E%0A%20%20addDestructor%28%28%29%3D%3E%20menuitem.remove%28%29%20%29%3B%0A%20%20%0A%20%20//%20%u0443%u0441%u0442%u0430%u043D%u0430%u0432%u043B%u0438%u0432%u0430%u0435%u043C%20%u0433%u0434%u0435%20%u043F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E%20%0A%20%20addEventListener%28%22popupshowing%22%2C%20%28%29%3D%3E%7B%0A%20%20%20%20%20menuitem.hidden%20%3D%20%21cbu.getPrefs%28%22CB.Proxy.inContextMenu%22%29%20%7C%7C%20%21gContextMenu.isContentSelected%3B%20//%20%21gContextMenu.isTextSelected%3B%0A%20%20%7D%2C%20false%2C%20contextMenu%29%3B%0A%20%20%0A%20%20%0A%20%20//%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%0A%20%20function%20addNewProxy%28sel%29%20%7B%20%20%0A%20%20%20%20%20var%20selection%20%3D%20gBrowser.contentDocument.defaultView.getSelection%28%29.toString%28%29%3B%0A%20%20%20%20%20var%20sel%20%3D%20%28%20sel%20%3D%3D%20undefined%20%29%20%3F%20selection%20%3A%20sel.toString%28%29%3B%0A%20%20%20%20%20sel%20%3D%20sel.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%20%22%22%29%3B%20//%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%2C%20%u0441%u043B%u0435%u0432%u0430%20%u0438%20%u0441%u043F%u0440%u0430%u0432%u0430%20%u043E%u0442%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%20%20%20%20%20sel%20%3D%20sel.replace%28/%5Cs+/g%2C%22%3A%22%29%3B%20//%20%u0437%u0430%u043C%u0435%u043D%u0438%u0442%u044C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%20%u0432%u043D%u0443%u0442%u0440%u0438%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%0A%20%20%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u043F%u043E%u0440%u0442%20...%0A%20%20%20%20%20if%20%28%20sel.length%20%3C%206%20%26%26%20isFinite%28sel%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20sel%20%3D%20sel.replace%28/%3A/g%2C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u043F%u043E%u0440%u0442%27%3B%0A%20%20%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.http_port%22%2C%20+sel%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u0430%u0434%u0440%u0435%u0441%20...%0A%20%20%20%20%20if%20%28%20sel.length%20%3E%205%20%26%26%20%21/%3A/.test%28sel%29%20%26%26%20sel.split%28%22.%22%29.length%20%3D%3D%204%20%29%20%7B%20%20%20%0A%20%20%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u0430%u0434%u0440%u0435%u0441%27%3B%0A%20%20%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.http%22%2C%20convertFromUnicode%28%22UTF-8%22%2C%20sel%29%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0430%u0434%u0440%u0435%u0441%20%u0438%20%u043F%u043E%u0440%u0442%20...%20%20%20%20%0A%20%20%20%20%20if%20%28%20sel.length%20%3E%205%20%26%26%20/%3A/.test%28sel%29%20%26%26%20sel.split%28%22%3A%22%29.length%20%3D%3D%202%20%26%26%20sel.split%28%22.%22%29.length%20%3D%3D%204%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u0430%u0434%u0440%u0435%u0441%20%u0438%20%u043F%u043E%u0440%u0442%27%3B%0A%20%20%20%20%20%20%20%20%20%20var%20array%20%3D%20sel.split%28%22%3A%22%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20array.forEach%28%28str%29%3D%3E%20addNewProxy%28str%29%20%29%3B%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%0A%0A%20%20%20%20%20if%20%28%20lab%20%3D%3D%20undefined%20%29%20return%3B%0A%0A%20%20%20%20%20//%20%u0432%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0440%u044F%u0434%u043E%u043C%20%u0441%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u043C%20%u0442%u0435%u043A%u0441%u0442%u043E%u043C%20...%20%20%20%20%20%0A%20%20%20%20%20function%20showTooltip%28%29%20%7B%0A%20%20%20%20%20%20%20%20var%20tooltip%20%3D%20gBrowser.appendChild%28%20document.createElement%28%22tooltip%22%29%20%29%3B%0A%20%20%20%20%20%20%20%20tooltip.style.cssText%20%3D%20%22color%3A%20red%20%21important%3B%20font-weight%3A%20bold%20%21important%3B%20font-size%3A%2014px%20%21important%3B%20-moz-box-orient%3A%20horizontal%3B%20text-align%3A%20center%3B%22%3B%0A%20%20%20%0A%20%20%20%20%20%20%20%20var%20image%20%3D%20tooltip.appendChild%28%20document.createElement%28%22image%22%29%20%29%3B%0A%20%20%20%20%20%20%20%20image.setAttribute%28%22src%22%2C%20self.image%29%3B%0A%20%20%20%0A%20%20%20%20%20%20%20%20var%20label%20%3D%20tooltip.appendChild%28%20document.createElement%28%22label%22%29%29%3B%0A%20%20%20%20%20%20%20%20label.setAttribute%28%22value%22%2C%20%22%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0435%u043D%20%22%20+%20lab%20+%20%22%20%u043F%u0440%u043E%u043A%u0441%u0438%3A%20%22%20+%20sel%29%3B%0A%0A%20%20%20%20%20%20%20%20var%20focused%20%3D%20document.commandDispatcher.focusedWindow%3B%0A%20%20%20%20%20%20%20%20var%20selection%20%3D%20focused.content.document.getSelection%28%29.getRangeAt%280%29.getBoundingClientRect%28%29%3B%0A%20%20%20%20%20%20%20%20var%20posX%20%3D%20focused.mozInnerScreenX%20+%20selection.left%3B%0A%20%20%20%20%20%20%20%20var%20posY%20%3D%20focused.mozInnerScreenY%20+%20selection.bottom%20-%205%3B%20%20%20%0A%0A%20%20%20%20%20%20%20%20tooltip.showPopup%28gBrowser%2C%20posX%2C%20posY%29%3B%0A%20%20%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20gBrowser.removeChild%28tooltip%29%2C%203000%29%3B%0A%20%20%20%20%20%7D%3B%0A%20%20%20%20%20showTooltip%28%29%3B%20%20%20%20%0A%20%20%7D%3B%0A%20%20%20%0A%7D%29%28document.getElementById%28%22contentAreaContextMenu%22%29%29%3B%20%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

bunda1
Да, теперь нормально. Спасибо.

Вроде не считаю себя нубом и руки растут правильно, но.. У меня появилась кнопка в виде фиолетового компьютера с коричневым овалом внизу справа. Любое действие с моей стороны абсолютно ничего не изменяет ни в кнопке, ни в настройках, ни в подсказках. Аддон установил последний, код кнопки из шапки. Перезагрузил несколько раз, вообще никакого эффекта. Что я не так делаю? :(
Upd: (Добавлено минут через 5) Проблему решил, всем спасибо :beer:

[firefox]
Firefox 51.0.1 x64. Кнопка перестала работать - при нажатии не происходит ничего.

IAmSelf пишет

[firefox]
Firefox 51.0.1 x64. Кнопка перестала работать - при нажатии не происходит ничего.

24-01-2017 15:55:57

bunda1 пишет
IAmSelf пишет

[firefox]
Firefox 51.0.1 x64. Кнопка перестала работать - при нажатии не происходит ничего.

24-01-2017 15:55:57

Спасибо!

я отключил xpinstall.signatures.required, перезагрузился, скачал файл, но опять-  не может быть установлено т.к. не было проверено Firefox 51.0.1 x64.

boris997 пишет

я отключил xpinstall.signatures.required, перезагрузился, скачал файл, но опять-  не может быть установлено т.к. не было проверено Firefox 51.0.1 x64.

У меня еще раньше было сделано это:
https://forum.mozilla-russia.org/viewtopic.php?id=70326
так что все установилось без проблем. Попробуйте...

IAmSelf пишет
boris997 пишет

я отключил xpinstall.signatures.required, перезагрузился, скачал файл, но опять-  не может быть установлено т.к. не было проверено Firefox 51.0.1 x64.

У меня еще раньше было сделано это:
https://forum.mozilla-russia.org/viewtopic.php?id=70326
так что все установилось без проблем. Попробуйте...

спасибо-все ок

Чудесная кнопка но не прописывает для https адреса. (network.proxy.ssl )
что бы применить для https приходится долгим нажатием на иконку вызвать меню и просто нажать ОК.

или это только у меня так?

slalalavka пишет

Чудесная кнопка но не прописывает для https адреса. (network.proxy.ssl )

А пример https адреса можно?

bunda1 пишет

А пример https адреса можно?

ну хотя бы этот https://2ip.ru/privacy или любой https://
p.s юзаю firefox 47.0.1

может кто то допилит под https ?

bunda1
кнопка перестала работать на ff53 и 52esr

Inko7 пишет

bunda1кнопка перестала работать на ff53 и 52esr

53.0.3 x64 - работает...

IAmSelf пишет

53.0.3 x64 - работает...

странно
на 52.1.2esr и по ЛКМ и по ПКМ выскакивает меню кнопки
новых кнопок никаких не ставил
пробовал обновиться на custom_buttons-0.0.5.8.9-fixed4-signed.xpi - то же самое
консоли чисто
куда копать?

Честно, не знаю. Я просто юзер. Все, что могу посоветовать - обратиться в ЛС к bunda1

Inko7 пишет

кнопка перестала работать на ff53 и 52esr

А какой вариант кнопки? У меня на w7х64 фф53х64 работает эта

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

Выделить код

Код:

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%3EProxy%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/ico%3Bbase64%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Dg4MPg4ODD4ODgw+Dg4MPg4ODD4ODgw+Dg4MPg4ODD4ODgwcnJyYeVlZUKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////////////////////wAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA/////////////////////8%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20Proxy%2C%20%u043E%u0442%2010.10.2016.%0A%0A%0A//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Athis.onclick%20%3De%3D%3E%20%7B%0A%20%20%20%0A%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041B%u041A%u041C%20....%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29openMenuPopup%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%20....%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20%0A%20%20%20%20%20%20%20%20cbu.getPrefs%28%22CB.Proxy.connectionsInTab%22%29%20%3F%20openConnectionsInTab%28%29%20%3A%20openConnections%28%29%3B%0A%7D%3B%0A%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Athis.onmouseover%20%3D%28%29%3D%3E%20%7B%0A%20%20%20var%20arr%20%3D%20%5B%22%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%22%2C%20%22%u0420%u0443%u0447%u043D%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%22%2C%20%22%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0430%u044F%20%u0447%u0435%u0440%u0435%u0437%20URL%22%2C%20%22%22%2C%20%22%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%22%2C%20%22%u0421%u0438%u0441%u0442%u0435%u043C%u043D%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%22%5D%3B%0A%20%20%20var%20str%20%3D%20arr.map%28%28m%2C%20i%29%3D%3E%20%28cbu.getPrefs%28%22network.proxy.type%22%29%20%3D%3D%20i%20%3F%20%22%u25CF%22%20%3A%20%22%20%20%22%29%20+%20m%29.filter%28m%3D%3E%20/%5CS/.test%28m%29%29.join%28%22%5Cn%22%29%3B%0A%20%20%20%20%20%0A%20%20%20this.tooltipText%20%3D%20%22Proxy%20+%22%20%0A%20%20%20%20%20%20+%20%22%5Cn%22%20+%20str%0A%20%20%20%20%20%20+%20%22%5Cn%5Cn%u041B%3A%20M%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%20%5Cn%u0421%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%22%0A%20%20%20%20%20%20+%20%22%5Cn%5Cn%u0422%u0435%u043A%u0443%u0449%u0438%u0435%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%3A%22%20%0A%20%20%20%20%20%20+%20%22%5CnIP%3A%20%22%20+%20Services.prefs.getComplexValue%28%22network.proxy.http%22%2C%20Ci.nsISupportsString%29.data%0A%20%20%20%20%20%20+%20%22%5Cn%u041F%u043E%u0440%u0442%3A%20%22%20+%20cbu.getPrefs%28%22network.proxy.http_port%22%29%0A%20%20%20%20%20%20+%20%22%5CnURL%3A%20%22%20+%20Services.prefs.getComplexValue%28%22network.proxy.autoconfig_url%22%2C%20Ci.nsISupportsString%29.data%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%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%7D%3B%0A%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...................%0Avar%20array%20%3D%20%5B%0A%20%20%20%7B%20label%3A%20%22%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%22%2C%20value%3A%200%2C%20radio%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u0420%u0443%u0447%u043D%u0430%u044F%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0441%u0435%u0440%u0432%u0438%u0441%u0430%20%u043F%u0440%u043E%u043A%u0441%u0438%3A%22%2C%20value%3A%201%2C%20radio%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22URL%20%u0430%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u043E%u0439%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u0441%u0435%u0440%u0432%u0438%u0441%u0430%20%u043F%u0440%u043E%u043A%u0441%u0438%22%2C%20value%3A%202%2C%20radio%3A%20%27%27%7D%2C%20%0A%20%20%20%7B%20label%3A%20%22%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0438%20%u043E%u043F%u0440%u0435%u0434%u0435%u043B%u044F%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0434%u043B%u044F%20%u044D%u0442%u043E%u0439%20%u0441%u0435%u0442%u0438%22%2C%20value%3A%204%2C%20radio%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u0418%u0441%u043F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u0442%u044C%20%u0441%u0438%u0441%u0442%u0435%u043C%u043D%u044B%u0435%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%22%2C%20value%3A%205%2C%20radio%3A%20%27%27%7D%2C%20%0A%20%20%20%7B%20separator%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u0414%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043E%u043C%20%u043C%u0435%u043D%u044E%22%2C%20value%3A%20%27CB.Proxy.inContextMenu%27%2C%20checkbox%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u041E%u0442%u043A%u0440%u044B%u0432%u0430%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u043A%u0430%u043A%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%22%2C%20value%3A%20%27CB.Proxy.connectionsInTab%27%2C%20checkbox%3A%20%27%27%7D%2C%0A%20%20%20%7B%20label%3A%20%22%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u043D%u0430%20%u0440%u0435%u0436%u0438%u043C%20%27%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%27%20%u043F%u0440%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0438%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%22%2C%20value%3A%20%27CB.Proxy.reset%27%2C%20checkbox%3A%20%27%27%7D%0A%20%20%20%5D%3B%0Avar%20menuPopup%20%3D%20self.appendChild%28%20document.createElement%28%22menupopup%22%29%20%29%3B%0AmenuPopup.setAttribute%28%22onclick%22%2C%20%22event.stopPropagation%28%29%22%29%3B%0A%0Afunction%20openMenuPopup%28%29%20%7B%0A%20%20%20menuPopup.textContent%20%3D%20%22%22%3B%0A%20%20%0A%20%20%20array.forEach%28m%3D%3E%20%7B%0A%20%20%20%20%20%20if%20%28%20%22separator%22%20in%20m%20%29%20%7B%20menuPopup.appendChild%28%20document.createElement%28%22menuseparator%22%29%20%29%3B%20return%20%7D%3B%0A%20%20%20%20%20%20var%20mItem%20%3D%20menuPopup.appendChild%28document.createElement%28%22menuitem%22%29%29%0A%20%20%20%20%20%20mItem.setAttribute%28%22label%22%2C%20m.label%29%3B%0A%0A%20%20%20%20%20%20if%20%28%20%22radio%22%20in%20m%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20mItem.setAttribute%28%22type%22%2C%20%22radio%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20mItem.setAttribute%28%27checked%27%2C%20cbu.getPrefs%28%22network.proxy.type%22%29%20%3D%3D%20m.value%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20mItem.onclick%20%3D%28%29%3D%3E%20cbu.setPrefs%28%22network.proxy.type%22%2C%20m.value%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%0A%20%20%20%20%20%20if%20%28%20%22checkbox%22%20in%20m%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20mItem.setAttribute%28%27type%27%2C%20%27checkbox%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20mItem.setAttribute%28%27checked%27%2C%20cbu.getPrefs%28m.value%29%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20mItem.onclick%20%3D%28%29%3D%3E%20cbu.setPrefs%28m.value%2C%20%21cbu.getPrefs%28m.value%29%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%7D%29%3B%0A%20%20%20menuPopup.showPopup%28self%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%7D%3B%0A%0A%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043E%u043A%u043D%u0435%20...................%20%20%0Afunction%20openConnections%28%29%20%7B%0A%20%20%20self.win%20%26%26%20self.win.close%28%29%3B%0A%20%20%20self.win%20%3D%20openDialog%28%22chrome%3A//browser/content/preferences/connection.xul%22%2C%20%22Proxy%22%2C%20%22centerscreen%22%29%3B%0A%20%20%20%0A%20%20%20//%20%u0434%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%20%22prefwindow%22%0A%20%20%20self.win.addEventListener%28%22load%22%2C%20function%20f%28e%29%20%7B%0A%20%20%20%20%20%20%20this.removeEventListener%28%22load%22%2C%20f%2C%20true%29%3B%20%0A%20%20%20%20%20%20%20e.target.documentElement.setAttribute%28%22type%22%2C%20%22prefwindow%22%29%3B%0A%20%20%20%7D%2C%20true%29%3B%0A%0A%20%20%20//%20%u0437%u0430%u043A%u0440%u044B%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u043F%u043E%20%u043A%u043B%u0438%u043A%u0443%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%0A%20%20%20gBrowser.addEventListener%28%22click%22%2C%20function%20c%28%29%20%7B%0A%20%20%20%20%20%20this.removeEventListener%28%22click%22%2C%20c%29%3B%0A%20%20%20%20%20%20try%20%7B%20self.win.close%28%29%20%7D%20catch%28e%29%20%7B%7D%3B%20%0A%20%20%20%7D%2C%20true%29%3B%0A%7D%3B%0A%0A%0A%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20...................%0Afunction%20openConnectionsInTab%28%29%20%7B%20%0A%20%20%20var%20connections%20%3D%20gBrowser.getBrowserForTab%28%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28%22chrome%3A//browser/content/preferences/connection.xul%22%29%20%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20//%20o%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%20%u0436%u0434%u0435%u0442%20%u043F%u043E%u043A%u0430%20%u043E%u0442%u043A%u0440%u043E%u0435%u0442%u0441%u044F%20%u043F%u0440%u043E%u043A%u0441%u0438%2C%20%u0443%u0434%u0430%u043B%u044F%u0435%u0442%20%u0441%u0435%u0431%u044F%20%u0438%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%0A%20%20%20connections.addEventListener%28%22pageshow%22%2C%20function%20c%28e%29%20%7B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20this.removeEventListener%28e.type%2C%20c%29%3B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20e.originalTarget.documentElement.setAttribute%28%22type%22%2C%20%22prefwindow%22%29%3B%0A%20%20%20%7D%29%20%20%20%0A%7D%3B%0A%0A%0A%0A//%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0438%u0432%u0430%u0442%u044C%20%u043D%u0443%u0436%u043D%u0443%u044E%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u0440%u0438%20%u0441%u0442%u0430%u0440%u0442%u0435%20%u0431%u0430%u0443%u0437%u0435%u0440%u0430%20%u0438%u043B%u0438%20%u043F%u0440%u0438%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%u0445%20%u0432%20%27about%3Aconfig%27%20...................%0Avar%20s%20%3D%20%22network.proxy.type%22%3B%0Afunction%20toggleImage%28%29%20%7B%0A%20%20%20var%20icon%20%3D%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0A%20%20%20switch%28%20cbu.getPrefs%28s%29%20%29%20%7B%0A%20%20%20%20%20%20case%200%3A%20icon.src%20%3D%20self.image%3B%20break%3B%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20case%201%3A%20icon.src%20%3D%20%27data%3Aimage/ico%3Bbase64%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zj48Pc4+TD3OPkw9zk5MPc5OTD3OTkw9zk5MPc4+TD2+TjwcHQ0oeCo6gKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////////////////////wAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA/////////////////////8%3D%27%3B%20break%3B%0A%20%20%20%20%20%20case%202%3A%20icon.src%20%3D%20%27data%3Aimage/ico%3Bbase64%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XKxMPFy8TDxcvEw8XLxMPFy8PDxcvEw8bLw8PFy8PDxMrCwa27q4d4lXQKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////////////////////wAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA/////////////////////8%3D%27%3B%20break%3B%0A%20%20%20%20%20%20case%204%3A%20icon.src%20%3D%20%27data%3Aimage/ico%3Bbase64%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bEysPGxMvDxsTLw8bEy8PFw8vDxsTLw8XEy8PFw8vDxMLKwbGru4eAdJUKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////////////////////wAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA/////////////////////8%3D%27%3B%20break%3B%0A%20%20%20%20%20%20case%205%3A%20icon.src%20%3D%20%27data%3Aimage/ico%3Bbase64%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Xc28Pl3NvD5tzbw+bc28Pm3NvD5tzbw+fb28Pm3NvD5trZwdbBvYewhHoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////////////////////wAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA/////////////////////8%3D%27%3B%20break%3B%0A%20%20%20%20%20%20default%3Aicon.src%20%3D%20self.image%3B%20%0A%20%20%20%7D%0A%7D%3B%20%20%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28%28%29%3D%3E%20gPrefService.removeObserver%28s%2C%20toggleImage%29%20%29%3B%0A%0A%0A%0A//%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u043D%u0430%20%u0440%u0435%u0436%u0438%u043C%20%27%u0411%u0435%u0437%20%u043F%u0440%u043E%u043A%u0441%u0438%27%20%u043F%u0440%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0438%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20...................%0Avar%20switchOffProxy%20%3D%20%7B%0A%20%20%20%20observe%3A%20function%28subject%2C%20topic%2C%20data%29%20%7B%0A%20%20%20%20%20%20%20if%20%28%20data%20%3D%3D%20%22shutdown%22%20%26%26%20cbu.getPrefs%28%22CB.Proxy.reset%22%29%20%29%20cbu.setPrefs%28%22network.proxy.type%22%2C%200%29%3B%20%20%0A%20%20%20%20%7D%0A%7D%3B%0AServices.obs.addObserver%28switchOffProxy%2C%20%22quit-application%22%2C%20false%29%3B%0A%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0435%u043C%20%u043C%u0435%u043D%u044E%20%u0434%u043B%u044F%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%20%u0432%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u043C%20%u043C%u0435%u043D%u044E%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20...................%0A%28%28contextMenu%29%3D%3E%20%7B%0A%0A%20%20//%20%u0441%u043E%u0437%u0434%u0430%u0442%u044C%20%u043D%u043E%u0432%u044B%u0439%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E%0A%20%20var%20menuitem%20%3D%20document.createElement%28%22menuitem%22%29%3B%20%20%20%20%20%20%0A%20%20menuitem.setAttribute%28%22label%22%2C%20%22%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u043F%u0440%u043E%u043A%u0441%u0438%22%29%3B%20%0A%20%20menuitem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%0A%20%20menuitem.setAttribute%28%22image%22%2C%20self.image%29%3B%0A%20%20menuitem.onclick%20%3D%28%29%3D%3E%20addNewProxy%28%29%3B%0A%20%20contextMenu.appendChild%28menuitem%29%3B%20//%20%u043A%u0430%u043A%20%u043F%u043E%u0441%u043B%u0435%u0434%u043D%u0438%u0439%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E%0A%20%20addDestructor%28%28%29%3D%3E%20menuitem.remove%28%29%20%29%3B%0A%20%20%0A%20%20//%20%u0443%u0441%u0442%u0430%u043D%u0430%u0432%u043B%u0438%u0432%u0430%u0435%u043C%20%u0433%u0434%u0435%20%u043F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E%20%0A%20%20addEventListener%28%22popupshowing%22%2C%20%28%29%3D%3E%7B%0A%20%20%20%20%20menuitem.hidden%20%3D%20%21cbu.getPrefs%28%22CB.Proxy.inContextMenu%22%29%20%7C%7C%20%21gContextMenu.isContentSelected%3B%20//%20%21gContextMenu.isTextSelected%3B%0A%20%20%7D%2C%20false%2C%20contextMenu%29%3B%0A%20%20%0A%20%20%0A%20%20//%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u043E%u043A%u0441%u0438%0A%20%20function%20addNewProxy%28sel%29%20%7B%20%20%0A%20%20%20%20%20var%20selection%20%3D%20gBrowser.contentDocument.defaultView.getSelection%28%29.toString%28%29%3B%0A%20%20%20%20%20var%20sel%20%3D%20%28%20sel%20%3D%3D%20undefined%20%29%20%3F%20selection%20%3A%20sel.toString%28%29%3B%0A%20%20%20%20%20sel%20%3D%20sel.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%20%22%22%29%3B%20//%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%2C%20%u0441%u043B%u0435%u0432%u0430%20%u0438%20%u0441%u043F%u0440%u0430%u0432%u0430%20%u043E%u0442%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%20%20%20%20%20sel%20%3D%20sel.replace%28/%5Cs+/g%2C%22%3A%22%29%3B%20//%20%u0437%u0430%u043C%u0435%u043D%u0438%u0442%u044C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%20%u0432%u043D%u0443%u0442%u0440%u0438%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%0A%20%20%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u043F%u043E%u0440%u0442%20...%0A%20%20%20%20%20if%20%28%20sel.length%20%3C%206%20%26%26%20isFinite%28sel%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20sel%20%3D%20sel.replace%28/%3A/g%2C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u043F%u043E%u0440%u0442%27%3B%0A%20%20%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.http_port%22%2C%20+sel%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u0430%u0434%u0440%u0435%u0441%20...%0A%20%20%20%20%20if%20%28%20sel.length%20%3E%205%20%26%26%20%21/%3A/.test%28sel%29%20%26%26%20sel.split%28%22.%22%29.length%20%3D%3D%204%20%29%20%7B%20%20%20%0A%20%20%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u0430%u0434%u0440%u0435%u0441%27%3B%0A%20%20%20%20%20%20%20%20%20%20cbu.setPrefs%28%22network.proxy.http%22%2C%20convertFromUnicode%28%22UTF-8%22%2C%20sel%29%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0430%u0434%u0440%u0435%u0441%20%u0438%20%u043F%u043E%u0440%u0442%20...%20%20%20%20%0A%20%20%20%20%20if%20%28%20sel.length%20%3E%205%20%26%26%20/%3A/.test%28sel%29%20%26%26%20sel.split%28%22%3A%22%29.length%20%3D%3D%202%20%26%26%20sel.split%28%22.%22%29.length%20%3D%3D%204%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20lab%20%3D%20%27%u0430%u0434%u0440%u0435%u0441%20%u0438%20%u043F%u043E%u0440%u0442%27%3B%0A%20%20%20%20%20%20%20%20%20%20var%20array%20%3D%20sel.split%28%22%3A%22%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20array.forEach%28%28str%29%3D%3E%20addNewProxy%28str%29%20%29%3B%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%0A%0A%20%20%20%20%20if%20%28%20lab%20%3D%3D%20undefined%20%29%20return%3B%0A%0A%20%20%20%20%20//%20%u0432%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0440%u044F%u0434%u043E%u043C%20%u0441%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u043C%20%u0442%u0435%u043A%u0441%u0442%u043E%u043C%20...%20%20%20%20%20%0A%20%20%20%20%20function%20showTooltip%28%29%20%7B%0A%20%20%20%20%20%20%20%20var%20tooltip%20%3D%20gBrowser.appendChild%28%20document.createElement%28%22tooltip%22%29%20%29%3B%0A%20%20%20%20%20%20%20%20tooltip.style.cssText%20%3D%20%22color%3A%20red%20%21important%3B%20font-weight%3A%20bold%20%21important%3B%20font-size%3A%2014px%20%21important%3B%20-moz-box-orient%3A%20horizontal%3B%20text-align%3A%20center%3B%22%3B%0A%20%20%20%0A%20%20%20%20%20%20%20%20var%20image%20%3D%20tooltip.appendChild%28%20document.createElement%28%22image%22%29%20%29%3B%0A%20%20%20%20%20%20%20%20image.setAttribute%28%22src%22%2C%20self.image%29%3B%0A%20%20%20%0A%20%20%20%20%20%20%20%20var%20label%20%3D%20tooltip.appendChild%28%20document.createElement%28%22label%22%29%29%3B%0A%20%20%20%20%20%20%20%20label.setAttribute%28%22value%22%2C%20%22%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0435%u043D%20%22%20+%20lab%20+%20%22%20%u043F%u0440%u043E%u043A%u0441%u0438%3A%20%22%20+%20sel%29%3B%0A%0A%20%20%20%20%20%20%20%20var%20focused%20%3D%20document.commandDispatcher.focusedWindow%3B%0A%20%20%20%20%20%20%20%20var%20selection%20%3D%20focused.content.document.getSelection%28%29.getRangeAt%280%29.getBoundingClientRect%28%29%3B%0A%20%20%20%20%20%20%20%20var%20posX%20%3D%20focused.mozInnerScreenX%20+%20selection.left%3B%0A%20%20%20%20%20%20%20%20var%20posY%20%3D%20focused.mozInnerScreenY%20+%20selection.bottom%20-%205%3B%20%20%20%0A%0A%20%20%20%20%20%20%20%20tooltip.showPopup%28gBrowser%2C%20posX%2C%20posY%29%3B%0A%20%20%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20gBrowser.removeChild%28tooltip%29%2C%203000%29%3B%0A%20%20%20%20%20%7D%3B%0A%20%20%20%20%20showTooltip%28%29%3B%20%20%20%20%0A%20%20%7D%3B%0A%20%20%20%0A%7D%29%28document.getElementById%28%22contentAreaContextMenu%22%29%29%3B%20%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Ultima2m
ё-маё, что-то я туплю, на версию сразу не глянул...
имею "// Proxy, от 25.02.2016."
поставил из первого поста "// Proxy, от 20.08.2016." - всё работает!!!
сорри за беспокойство, всем спасибо

bunda1
А возможно сделать упрощенную версию кнопки Proxy?

Оставить только:
    1. Левый клик по кнопке: Переключать
        a. "Без прокси" ("network.proxy.type", 0)
        b. "URL автоматической настройки сервиса прокси" ("network.proxy.type", 2).
    2. Длинный левый клик по кнопке: Открыть настройки прокси в окне.
    3. Чтобы при закрытии браузера автоматом переключалось на режим "Без прокси".
    4. Показывалась соответствующая иконка кнопки при старте баузера или при переключении "С прокси" - "Без прокси".

А всё остальное убрать.

unter_officer пишет

А возможно сделать упрощенную версию кнопки Proxy?
Оставить только:
    1. Левый клик по кнопке: Переключать
        a. "Без прокси" ("network.proxy.type", 0)
        b. "URL автоматической настройки сервиса прокси" ("network.proxy.type", 2).
    2. Длинный левый клик по кнопке: Открыть настройки прокси в окне.
    3. Чтобы при закрытии браузера автоматом переключалось на режим "Без прокси".
    4. Показывалась соответствующая иконка кнопки при старте баузера или при переключении "С прокси" - "Без прокси".
А всё остальное убрать.

Отбой.
Сам сделал.

уважаемый bunda1 подпилите под https пожалуста. а то приходится делать долгий клик по кнопке после открывается окно настроек и просто нажать ОК
и тогда всё работает

сижу до сих пор на 56 версии FF. Решил поэкспериментировал с дополнениями на 59 версии, переходить можно :) В том числе Custom Buttons поставил. То что  нужно из кнопок поставил, а вот Прокси не хочет работать. А очень нужно. Ибо каждый раз лезть в настройки лень. Есть ли рабочая кнопка под FF59+ ?

AlexSi пишет

Есть ли рабочая кнопка под FF59+ ?

Proxy

bunda1, спасибо, рабаотает Как я так внимательно смотрел что даты не увидел правки :(

AlexSi пишет

bunda1, спасибо, рабаотает Как я так внимательно смотрел что даты не увидел правки :(

Я только сегодня выложил исправленную версию :)

bunda1
А можете подправить этот вариант (c 3-мя переключениями): №50 :blush:

Добавлено:
bunda1
Огромное спасибо! :beer:

adidharma пишет

bunda1
А можете подправить этот вариант (c 3-мя переключениями): №50 :blush:

Выделить код

Код:

// Proxy, от 15.05.2018.


// Настройка функций кликов мыши для кнопки ...................
this.onmousedown =e=> {
   
   this.onmouseup =e=> {                  // левый клик
        if ( e.button ) return;
        clearTimeout(self.timer);           

        switch( cbu.getPrefs("network.proxy.type") ) {
           case 0:  var data = 1; break;            
           case 1:  var data = 2; break; 
           case 2:  var data = 0; break;
           default: var data = 0; 
        }
        cbu.setPrefs("network.proxy.type", data);  
   }

   if ( e.button == 0 )                  // длинный левый клик
        self.timer = setTimeout(()=>{     
           self.onmouseup = '';
           cbu.getPrefs("CB.Proxy.connectionsInTab") ? openConnectionsInTab() : openConnections();
        }, 500);
   
   if ( e.button == 2 )                  // правый клик
        menuPopup.showPopup(self, -1, -1, "popup", "bottomleft", "topleft");
};
this.oncontextmenu = e => e.detail == 2 && !menuPopup.hidePopup()
     || e.ctrlKey || !!menuPopup.openPopup(this, "after_start");



// Подсказка для кнопки ...................
this.onmouseover =()=> {
   this.tooltipText = "Proxy \nЛ: Переключить прокси \nДЛ: Открыть настройки прокси"
                    + "\nП: Mеню кнопки \nДП: CB меню \n\nТекущие настройки прокси: " 
                    + "\nIP: " + cbu.getPrefs("network.proxy.http")
                    + "\nПорт: "+ cbu.getPrefs("network.proxy.http_port");                                                    
};



// Создать меню для кнопки ...................
var array = [
   { label: "Добавление прокси в контекстом меню", value: 'CB.Proxy.inContextMenu' },
   { label: "Открывать настройки прокси как вкладку", value: 'CB.Proxy.connectionsInTab' },
   { label: "Переключать на режим 'Без прокси' при закрытии браузера ", value: 'CB.Proxy.reset' }    
];

var menuPopup = document.getElementById('mainPopupSet').appendChild(document.createElement("menupopup"));
array.forEach((m)=> {
   var mItem = document.createElement("menuitem");
   mItem.setAttribute("label", m.label);
   mItem.setAttribute('type', 'checkbox');
   mItem.setAttribute('checked', cbu.getPrefs(m.value) );
   mItem.onclick =()=> cbu.setPrefs(m.value, !cbu.getPrefs(m.value));  
   menuPopup.appendChild(mItem);
});
addDestructor(()=> menuPopup.remove() );


// Функция открывает настройки прокси в окне ...................  
function openConnections() {
   self.win && self.win.close();
   self.win = openDialog("chrome://browser/content/preferences/connection.xul", "Proxy", "centerscreen");
   
   // добавить атрибут "prefwindow"
   self.win.addEventListener("load", function f(e) {
       this.removeEventListener("load", f, true); 
       e.target.documentElement.setAttribute("type", "prefwindow");
   }, true);

   // закрыть настройки прокси по клику на странице 
   gBrowser.addEventListener("click", function c() {
      this.removeEventListener("click", c);
      try { self.win.close() } catch(e) {}; 
   }, true);
};



// Функция открывает настройки прокси в вкладке ...................
function openConnectionsInTab() { 
   var connections = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("chrome://browser/content/preferences/connection.xul") ); 
          
   // oбработчик ждет пока откроется прокси, удаляет себя и добавляет атрибут
   connections.addEventListener("pageshow", function c(e) {         
      this.removeEventListener(e.type, c);         
      e.originalTarget.documentElement.setAttribute("type", "prefwindow");
   })   
};



// Установливать нужную иконку кнопки при старте баузера или при изменениях в 'about:config' ...................
var s = "network.proxy.type";
function toggleImage() {
   var icon = self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon");
   switch( cbu.getPrefs(s) ) {
      case 0: icon.src = self.image; break;          
      case 1: icon.src = 'data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAA4GQAAnFmkAHQ5fAAQAKAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAQBJBFQOLQ+nX38ecev/mu6of8gfFvtAyUXewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLUza7PKd//3S7oP2849X9zuvh/mW4mf4XiV7/AB4QZwAAAAAAAAAAAQEBAQAAAAAZGhgTKSwnLyYqJDErKCUnID8vXgaAUP9BlnH8b7ea/ojHrv+q2sf/a7CT+zGWbf8PakXGAAIAAAEBAQMHBwcbAAAAD2BiXn76/ff/4ebg/Onm4f+DtZ7/A31L/j2Wb/+Fwaj/ls23/7rh0v9+vaT+M5du/xKGWO0DIxIdAAAAAAEBAQEAAAABBgYFEaSmorbP08z239vX/4OwnP4ail3/RJlz/5HHsP/T7+X/ms64/3K2mP40k2r/D3tM7AUiExwhIx8meXt1mXt+eKJ3eXSce353n6esouDMysf/o7eq/kOdeP92uZv/vuPT/9Hs4P/C4tT/eLWa+juWbv8bcEq7AAYBAF1gWn7//////f39/P//////////////////////////lcKx/3i9pf/K7OD/2O/l/7ndzf6Fw6n/VK+I/AsxHj8AAAAAXF5bf+Ln2P+AnU/4fZ1N+4WiV/yKp13+jKlh/5CsZf+GpFj/Zpxh/4C5nf+i0L7+k8ex/1udf+UTOCZFAAAAAAEBAQJfYF5/3uXR/16IIPxciiH/Z5Iv/26YOP9ymz3/cpw+/3OcPf9wlzb/YI80/1mKNPu707X/YmZjiAAAAAAEBAQGAAAAAF9gXoDg5tT/cJU6/HGaPf9/pE3/hqtX/4uvXf+NsF7/iKxZ/4KoU/9+o0r/cpY6+9zjyf9ubm2JAAAAAAMEAwQAAAAAX2BegODm1P94nEX8e6JJ/4quXP+Vt2n/nb1z/6LBef+jwXz/ob96/527d/+NrGP71+HG/2praogAAAAABAQDBAAAAABfYF2A4ObU/4WlVvyPsmP/osB7/7HMj/+81J3/wdik/8DXo/+60pz/tc6X/6G6ffvY4sf/amtqiAAAAAAEBAMEAAAAAF9gXn/e5dL/n7l7/LLMk//B16X/zuG2/9jpwv/b68b/2enE/9Pkvv/Q4bv/uMud+9jhyP9qa2mHAAAAAAQEAwQAAAAAX2Bef97k0v+gt335sceT/LrNnfzC1Kj8ydmx/MzatfzK2bP8xtav/MbVr/ywwpL41+HH/2tsaokAAAAABAQDBAAAAABZW1Z3+fz1/+Dm1Pzj6db/5u3b/+nv3v/r8eD/6vDe/+ft2//k69j/4efT/9ngzPv7//b/ZGdhfwAAAAADBAMEAAAAABcZFRpZW1Z6YGFfgWBiYIBhYmGAYmJhgGJjYoBiY2KAYmJhgGFiYYBgYWCAX2BegF1fWoAbHRkeAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA='; break;
      case 2: icon.src = 'data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAAcHQAAYGGkAEBBfAAEBKAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABAQEAAgICAAICAgACAgMBAQEAAAEBJAA6OrQAf3/8ALCw/gCiov8AXl7tABkZewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMAOTm7AIOD/wCjo/0A1tb9AOHh/gCcnP4AY2P/ABISZwAAAAAAAAAAAAEBAQAAAAAAGBgTACgoLwAmJjEAJiYnADIyXgBWVv8Adnb8AJ2d/gCxsf8Aycn/AJeX+wBycv8ASkrGAAACAAABAQMABwcbAAAADwBfX34A+fn/AOHh/ADj4/8AoaH/AFJS/gB1df8Aq6v/ALm5/wDT0/8Ap6f+AHNz/wBeXu0AFRUdAAAAAAABAQEAAAABAAUFEQCjo7YAzs72ANnZ/wCfn/4AY2P/AHl5/wCzs/8A5ub/ALu7/wCcnP4AcHD/AFNT7AAVFRwAICAmAHd3mQB6eqIAdXWcAHl5nwClpeAAyMj/AK2t/gB9ff8An5//ANXV/wDh4f8A1tb/AJ6e+gB0dP8AUFC7AAEGAABcXH4A////AP39/AD///8A////AP///wD///8A////ALOz/wCnp/8A4eH/AObm/wDPz/4ArKz/AI2N/AAhIT8AAAAAAFxcfwDd3f8Aa2v4AGpq+wBycvwAeHj+AHt7/wB/f/8Ac3P/AHNz/wCiov8AwMD+ALS0/wCEhOUAKSlFAAAAAAABAQIAXl5/ANjY/wBGRvwARkb/AFJS/wBaWv8AX1//AF9f/wBfX/8AWVn/AFRU/wBRUfsAvr7/AGNjiAAAAAAABAQGAAAAAABeXoAA2tr/AFtb/ABeXv8AbGz/AHV1/wB6ev8Ae3v/AHd3/wBxcf8Aamr/AFtb+wDS0v8AbW2JAAAAAAADAwQAAAAAAF5egADa2v8AZGT8AGlp/wB5ef8AhYX/AI2N/wCTk/8AlJT/AJKS/wCPj/8AfX37AM/P/wBqaogAAAAAAAMDBAAAAAAAXl6AANra/wBycvwAf3//AJOT/wClpf8AsLD/ALa2/wC1tf8Ar6//AKqq/wCTk/sA0ND/AGpqiAAAAAAAAwMEAAAAAABeXn8A2dn/AJGR/ACnp/8At7f/AMXF/wDQ0P8A09P/ANHR/wDLy/8AyMj/AK2t+wDR0f8AaWmHAAAAAAADAwQAAAAAAF5efwDY2P8AkpL5AKWl/ACurvwAuLj8AL+//ADCwvwAwMD8AL29/AC8vPwAo6P4ANDQ/wBqaokAAAAAAAMDBAAAAAAAV1d3APf3/wDa2vwA3d3/AOHh/wDk5P8A5ub/AOTk/wDh4f8A39//ANra/wDT0/sA+fn/AGNjfwAAAAAAAwMEAAAAAAAWFhoAV1d6AF9fgQBgYIAAYWGAAGFhgABiYoAAYmKAAGFhgABhYYAAYGCAAF5egABbW4AAGhoeAAAAAAABAQEAAAAA/oOAQeEAgEH6AIBBoACAQQAAAEGAAABBAACAQQAAgEEAAQBBAAKAQQACgEEAAoBBAAKAQQACgEEAAoBBAAKAQQACgEE='; break;
      default:icon.src = self.image; 
   }
};  
toggleImage();
Services.prefs.addObserver(s, toggleImage, false);
addDestructor(()=> Services.prefs.removeObserver(s, toggleImage));


// Переключать на режим 'Без прокси' при закрытии браузера если это разрешено в 'about:config' ...................
var toggleButton = {
   observe:(subject, topic, data)=> {
      cbu.getPrefs("CB.Proxy.reset") && data == "shutdown" && cbu.setPrefs("network.proxy.type", 0);  
    }
};
Services.obs.addObserver(toggleButton, "quit-application", false);


// Создаем меню для добавление прокси в контекстном меню выделенного текста на странице ...................
var contextMenu = document.getElementById("contentAreaContextMenu");
var menuitem = document.createElement("menuitem");      
menuitem.setAttribute("label", "Добавить прокси"); 
menuitem.setAttribute("class", "menuitem-iconic");
menuitem.setAttribute("image", self.image);
menuitem.onclick =()=> addNewProxy();
contextMenu.appendChild(menuitem); // как последний пункт меню
addDestructor(()=> menuitem.remove());
  
// устанавливаем где показывать пункт меню 
addEventListener("popupshowing", ()=> {
   menuitem.hidden = !cbu.getPrefs("CB.Proxy.inContextMenu") || !gContextMenu.isContentSelected; // !gContextMenu.isTextSelected;
}, false, contextMenu);
  
  
// добавление прокси ...................
function addNewProxy(sel) {  
   var selection = gBrowser.contentDocument.defaultView.getSelection().toString();
   var sel = ( sel == undefined ) ? selection : sel.toString();
   sel = sel.replace(/^\s+|\s+$/g, ""); // удалить пробелы, слева и справа от строки
   sel = sel.replace(/\s+/g,":"); // заменить пробелы внутри строки

   // если только порт ...
   if ( sel.length < 6 && isFinite(sel) ) { 
        sel = sel.replace(/:/g, "");
        var lab = 'порт';
        cbu.setPrefs("network.proxy.http_port", +sel);                    
        }
     
   // если только адрес ...
   if ( sel.length > 5 && !/:/.test(sel) && sel.split(".").length == 4 ) {   
        var lab = 'адрес';
        cbu.setPrefs("network.proxy.http", convertFromUnicode("UTF-8", sel));  
        }   
     
   // если адрес и порт ...    
   if ( sel.length > 5 && /:/.test(sel) && sel.split(":").length == 2 && sel.split(".").length == 4 ) {
        var lab = 'адрес и порт';
        var array = sel.split(":");  
        array.forEach((str)=> addNewProxy(str) );          
        }     

   if ( lab == undefined ) return;

   // всплывающая подсказка рядом с выделенным текстом ...     
   function showTooltip() {
      var tooltip = gBrowser.appendChild( document.createElement("tooltip") );
      tooltip.style.cssText = "color: red !important; font-weight: bold !important; font-size: 14px !important; -moz-box-orient: horizontal; text-align: center;";
   
      var image = tooltip.appendChild( document.createElement("image") );
      image.setAttribute("src", self.image);
   
      var label = tooltip.appendChild( document.createElement("label"));
      label.setAttribute("value", "Установлен " + lab + " прокси: " + sel);

      var focused = document.commandDispatcher.focusedWindow;
      var selection = focused.content.document.getSelection().getRangeAt(0).getBoundingClientRect();
      var posX = focused.mozInnerScreenX + selection.left;
      var posY = focused.mozInnerScreenY + selection.bottom - 5;   

      tooltip.showPopup(gBrowser, posX, posY);
      setTimeout(()=> gBrowser.removeChild(tooltip), 3000);
   };
   showTooltip();    
};

  
// Конвертировать текст в юникод .............  
function convertFromUnicode(charset, str) {
   var converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Ci.nsIScriptableUnicodeConverter);
   converter.charset = charset;
   str = converter.ConvertFromUnicode(str);
   return str + converter.Finish();
};

Я не силён в терминах , можно сделать чтоб была не ручная , а автом. настройка прокси .Т.е. когда вкл. прокси был на авто настройке.
А то после перезапуска слетает. (FF 52)

laleks
правой кнопкой мыши по кнопке proxy нажми и увидишь опции

тысяча извинений если не в соответствующий топ пишу.
симанки 2.49.3, CB версии 0.0.5.8.9.3.

-----------по совету человека с форума сразу опишу что нужно--------------------

требуется кнопка

кнопка ОТЖАТА (по умолчанию) - используется системный прокси (настройки из интернет екплорера)
кнопка НАЖАТА - используется socks5 прокси 192.168.0.15 :9051

запоминать статус после перезапуска не требуется. (при повторном запуске КНОПКА СНОВА ОТЖАТА)

---------------------------

bunda1 - просьба сделать авто-включение Proxy, если открыт какой-либо адрес из списка.

Пример: открываю запрещённый сайт: rutracker.org, flibusta.is и прочие, забаненные провайдером… (открываю из закладок или about:newtab)
Нужно: автоматически при совпадении адреса из списка включить режим: «URL автоматической настройки»
(и переоткрыть страницу, если нельзя заранее перехватить переход по адресу из списка)

Заранее спасибо! :beer:

Исправил кнопку Proxy для FF64.

Добрый день. Просьба починить старый код кнопки, под FF60.0 ESR . С тройной функцией кнопки 1-"Без прокси" , 2-"Ручная настройка прокси", 3-"URL автоматической настройки прокси" .
Вторая просьба, доработать кнопку  Proxy, Версия: от 13.05.2019. ,  чтобы переключение происходило не на "Ручная настройка прокси" а на "URL автоматической настройки прокси" тоже под FF60.0 ESR .
Заранее спасибо.

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

Выделить код

Код:

// Proxy, от 25.02.2016.


// Настройка функций кликов мыши для кнопки ...................
this.onmousedown =e=> {
   
   this.onmouseup =e=>{                  // левый клик
        if ( e.button ) return;
        clearTimeout(self.timer);           

        switch( cbu.getPrefs("network.proxy.type") ) {
           case 0:  var data = 1; break;            
           case 1:  var data = 2; break; 
           case 2:  var data = 0; break;
           default: var data = 0; 
        }
        cbu.setPrefs("network.proxy.type", data);  
   }

   if ( e.button == 0 )                  // длинный левый клик
        self.timer = setTimeout(()=>{     
           self.onmouseup = '';
           cbu.getPrefs("CB.Proxy.connectionsInTab") ? openConnectionsInTab() : openConnections();
        }, 500);
   
   if ( e.button == 2 )                  // правый клик
        menuPopup.showPopup(self, -1, -1, "popup", "bottomleft", "topleft");
};
self.onclick =e=> e.preventDefault();



// Подсказка для кнопки ...................
this.onmouseover =()=> {
   this.tooltipText = "Proxy \nЛ: Переключить прокси \nДЛ: Открыть настройки прокси"
                    + "\nП: Mеню кнопки \n\nТекущие настройки прокси: " 
                    + "\nIP: " + Services.prefs.getComplexValue("network.proxy.http", Ci.nsISupportsString).data
                    + "\nПорт: "+ cbu.getPrefs("network.proxy.http_port");                                                    
};



// Создать меню для кнопки ...................
var array = [
   { label: "Добавление прокси в контекстом меню", value: 'CB.Proxy.inContextMenu' },
   { label: "Открывать настройки прокси как вкладку", value: 'CB.Proxy.connectionsInTab' },
   { label: "Переключать на режим 'Без прокси' при закрытии браузера ", value: 'CB.Proxy.reset' }    
];

var menuPopup = document.getElementById('mainPopupSet').appendChild(document.createElement("menupopup"));
array.forEach((m)=> {
   var mItem = document.createElement("menuitem");
   mItem.setAttribute("label", m.label);
   mItem.setAttribute('type', 'checkbox');
   mItem.setAttribute('checked', cbu.getPrefs(m.value) );
   mItem.onclick =()=> cbu.setPrefs(m.value, !cbu.getPrefs(m.value));  
   menuPopup.appendChild(mItem);
});
addDestructor(()=> menuPopup.remove() );

// добавить стандартное контекстное меню 
menuPopup.appendChild(document.createElement("menuseparator"));
menuPopup.appendChild(document.createElement("menu")).setAttribute("label", "Меню кнопки");
var clone = menuPopup.lastChild.appendChild(document.getElementById("custombuttons-contextpopup").cloneNode(true));
clone.setAttribute("onpopupshowing", "document.popupNode = document.getElementById('" + _id + "')");



// Функция открывает настройки прокси в окне ...................
function openConnections() {
   for ( var win, nm = Services.wm.getEnumerator(null); win = nm.getNext(); ) 
         if ( win.name == 'Proxy') {
              win.focus();  
              break;
              }
   var win = openDialog("chrome://browser/content/preferences/connection.xul", "Proxy", "centerscreen");

   // добавить атрибут "prefwindow"
   win.addEventListener("load", function f(e) {
       this.removeEventListener("load", f, true); 
       e.target.documentElement.setAttribute("type", "prefwindow");
   }, true );
   
   // закрыть настройки прокси по клику на странице 
   gBrowser.addEventListener("click", function c() {
      this.removeEventListener("click", c );
      try { win.close() } catch(e) {}; 
   }, true );
};



// Функция открывает настройки прокси в вкладке ...................
function openConnectionsInTab() { 
   var connections = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("chrome://browser/content/preferences/connection.xul") ); 
          
   // oбработчик ждет пока откроется прокси, удаляет себя и добавляет атрибут
   connections.addEventListener("pageshow", function c(e) {         
      this.removeEventListener(e.type, c);         
      e.originalTarget.documentElement.setAttribute("type", "prefwindow");
   })   
};



// Установливать нужную иконку кнопки при старте баузера или при изменениях в 'about:config' ...................
var s = "network.proxy.type";
function toggleImage() {
   var icon = self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon");
   switch( cbu.getPrefs(s) ) {
      case 0: icon.src = self.image; break;          
      case 1: icon.src = 'data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAA4GQAAnFmkAHQ5fAAQAKAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAQBJBFQOLQ+nX38ecev/mu6of8gfFvtAyUXewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLUza7PKd//3S7oP2849X9zuvh/mW4mf4XiV7/AB4QZwAAAAAAAAAAAQEBAQAAAAAZGhgTKSwnLyYqJDErKCUnID8vXgaAUP9BlnH8b7ea/ojHrv+q2sf/a7CT+zGWbf8PakXGAAIAAAEBAQMHBwcbAAAAD2BiXn76/ff/4ebg/Onm4f+DtZ7/A31L/j2Wb/+Fwaj/ls23/7rh0v9+vaT+M5du/xKGWO0DIxIdAAAAAAEBAQEAAAABBgYFEaSmorbP08z239vX/4OwnP4ail3/RJlz/5HHsP/T7+X/ms64/3K2mP40k2r/D3tM7AUiExwhIx8meXt1mXt+eKJ3eXSce353n6esouDMysf/o7eq/kOdeP92uZv/vuPT/9Hs4P/C4tT/eLWa+juWbv8bcEq7AAYBAF1gWn7//////f39/P//////////////////////////lcKx/3i9pf/K7OD/2O/l/7ndzf6Fw6n/VK+I/AsxHj8AAAAAXF5bf+Ln2P+AnU/4fZ1N+4WiV/yKp13+jKlh/5CsZf+GpFj/Zpxh/4C5nf+i0L7+k8ex/1udf+UTOCZFAAAAAAEBAQJfYF5/3uXR/16IIPxciiH/Z5Iv/26YOP9ymz3/cpw+/3OcPf9wlzb/YI80/1mKNPu707X/YmZjiAAAAAAEBAQGAAAAAF9gXoDg5tT/cJU6/HGaPf9/pE3/hqtX/4uvXf+NsF7/iKxZ/4KoU/9+o0r/cpY6+9zjyf9ubm2JAAAAAAMEAwQAAAAAX2BegODm1P94nEX8e6JJ/4quXP+Vt2n/nb1z/6LBef+jwXz/ob96/527d/+NrGP71+HG/2praogAAAAABAQDBAAAAABfYF2A4ObU/4WlVvyPsmP/osB7/7HMj/+81J3/wdik/8DXo/+60pz/tc6X/6G6ffvY4sf/amtqiAAAAAAEBAMEAAAAAF9gXn/e5dL/n7l7/LLMk//B16X/zuG2/9jpwv/b68b/2enE/9Pkvv/Q4bv/uMud+9jhyP9qa2mHAAAAAAQEAwQAAAAAX2Bef97k0v+gt335sceT/LrNnfzC1Kj8ydmx/MzatfzK2bP8xtav/MbVr/ywwpL41+HH/2tsaokAAAAABAQDBAAAAABZW1Z3+fz1/+Dm1Pzj6db/5u3b/+nv3v/r8eD/6vDe/+ft2//k69j/4efT/9ngzPv7//b/ZGdhfwAAAAADBAMEAAAAABcZFRpZW1Z6YGFfgWBiYIBhYmGAYmJhgGJjYoBiY2KAYmJhgGFiYYBgYWCAX2BegF1fWoAbHRkeAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA='; break;
      case 2: icon.src = 'data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAAcHQAAYGGkAEBBfAAEBKAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABAQEAAgICAAICAgACAgMBAQEAAAEBJAA6OrQAf3/8ALCw/gCiov8AXl7tABkZewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMAOTm7AIOD/wCjo/0A1tb9AOHh/gCcnP4AY2P/ABISZwAAAAAAAAAAAAEBAQAAAAAAGBgTACgoLwAmJjEAJiYnADIyXgBWVv8Adnb8AJ2d/gCxsf8Aycn/AJeX+wBycv8ASkrGAAACAAABAQMABwcbAAAADwBfX34A+fn/AOHh/ADj4/8AoaH/AFJS/gB1df8Aq6v/ALm5/wDT0/8Ap6f+AHNz/wBeXu0AFRUdAAAAAAABAQEAAAABAAUFEQCjo7YAzs72ANnZ/wCfn/4AY2P/AHl5/wCzs/8A5ub/ALu7/wCcnP4AcHD/AFNT7AAVFRwAICAmAHd3mQB6eqIAdXWcAHl5nwClpeAAyMj/AK2t/gB9ff8An5//ANXV/wDh4f8A1tb/AJ6e+gB0dP8AUFC7AAEGAABcXH4A////AP39/AD///8A////AP///wD///8A////ALOz/wCnp/8A4eH/AObm/wDPz/4ArKz/AI2N/AAhIT8AAAAAAFxcfwDd3f8Aa2v4AGpq+wBycvwAeHj+AHt7/wB/f/8Ac3P/AHNz/wCiov8AwMD+ALS0/wCEhOUAKSlFAAAAAAABAQIAXl5/ANjY/wBGRvwARkb/AFJS/wBaWv8AX1//AF9f/wBfX/8AWVn/AFRU/wBRUfsAvr7/AGNjiAAAAAAABAQGAAAAAABeXoAA2tr/AFtb/ABeXv8AbGz/AHV1/wB6ev8Ae3v/AHd3/wBxcf8Aamr/AFtb+wDS0v8AbW2JAAAAAAADAwQAAAAAAF5egADa2v8AZGT8AGlp/wB5ef8AhYX/AI2N/wCTk/8AlJT/AJKS/wCPj/8AfX37AM/P/wBqaogAAAAAAAMDBAAAAAAAXl6AANra/wBycvwAf3//AJOT/wClpf8AsLD/ALa2/wC1tf8Ar6//AKqq/wCTk/sA0ND/AGpqiAAAAAAAAwMEAAAAAABeXn8A2dn/AJGR/ACnp/8At7f/AMXF/wDQ0P8A09P/ANHR/wDLy/8AyMj/AK2t+wDR0f8AaWmHAAAAAAADAwQAAAAAAF5efwDY2P8AkpL5AKWl/ACurvwAuLj8AL+//ADCwvwAwMD8AL29/AC8vPwAo6P4ANDQ/wBqaokAAAAAAAMDBAAAAAAAV1d3APf3/wDa2vwA3d3/AOHh/wDk5P8A5ub/AOTk/wDh4f8A39//ANra/wDT0/sA+fn/AGNjfwAAAAAAAwMEAAAAAAAWFhoAV1d6AF9fgQBgYIAAYWGAAGFhgABiYoAAYmKAAGFhgABhYYAAYGCAAF5egABbW4AAGhoeAAAAAAABAQEAAAAA/oOAQeEAgEH6AIBBoACAQQAAAEGAAABBAACAQQAAgEEAAQBBAAKAQQACgEEAAoBBAAKAQQACgEEAAoBBAAKAQQACgEE='; break;
      default:icon.src = self.image; 
   }
};  
toggleImage();
gPrefService.addObserver(s, toggleImage, false);
addDestructor(()=> gPrefService.removeObserver(s, toggleImage) );



// Переключать на режим 'Без прокси' при закрытии браузера если это разрешено в 'about:config' ...................
var switchOffProxy = {
    observe: function(subject, topic, data) {
       if ( data == "shutdown" && cbu.getPrefs("CB.Proxy.reset") ) cbu.setPrefs("network.proxy.type", 0);  
    }
};
Services.obs.addObserver(switchOffProxy, "quit-application", false);



// Создаем меню для добавление прокси в контекстном меню выделенного текста на странице ...................
((contextMenu)=> {

  // создать новый пункт меню
  var menuitem = contextMenu.appendChild( document.createElement("menuitem") );      
  menuitem.setAttribute("label", "Добавить прокси"); 
  menuitem.setAttribute("class", "menuitem-iconic");
  menuitem.setAttribute("image", self.image);
  menuitem.onclick =()=> addNewProxy();
  addDestructor(()=> menuitem.remove() );
  
  // устанавливаем где показывать пункт меню 
  addEventListener("popupshowing", ()=>{
     menuitem.hidden = !cbu.getPrefs("CB.Proxy.inContextMenu") || !gContextMenu.isContentSelected; // !gContextMenu.isTextSelected;
  }, false, contextMenu);
  
  
  // добавление прокси
  function addNewProxy(sel) {  
     var selection = document.commandDispatcher.focusedWindow.getSelection().toString();
     var sel = ( sel == undefined ) ? selection : sel.toString();
     sel = sel.replace(/^\s+|\s+$/g, ""); // удалить пробелы, слева и справа от строки
     sel = sel.replace(/\s+/g,":"); // заменить пробелы внутри строки

     // если только порт ...
     if ( sel.length < 6 && isFinite(sel) ) { 
          sel = sel.replace(/:/g, "");
          var lab = 'порт';
          cbu.setPrefs("network.proxy.http_port", +sel);                    
          }
     
     // если только адрес ...
     if ( sel.length > 5 && !/:/.test(sel) && sel.split(".").length == 4 ) {   
          var lab = 'адрес';
          cbu.setPrefs("network.proxy.http", convertFromUnicode("UTF-8", sel));  
          }   
     
     // если адрес и порт ...    
     if ( sel.length > 5 && /:/.test(sel) && sel.split(":").length == 2 && sel.split(".").length == 4 ) {
          var lab = 'адрес и порт';
          var array = sel.split(":");  
          array.forEach((str)=> addNewProxy(str) );          
          }     

     if ( lab == undefined ) return;

     // всплывающая подсказка рядом с выделенным текстом ...     
     function showTooltip() {
        var tooltip = gBrowser.appendChild( document.createElement("tooltip") );
        tooltip.style.cssText = "color: red !important; font-weight: bold !important; font-size: 14px !important; -moz-box-orient: horizontal; text-align: center;";
   
        var image = tooltip.appendChild( document.createElement("image") );
        image.setAttribute("src", self.image);
   
        var label = tooltip.appendChild( document.createElement("label"));
        label.setAttribute("value", "Установлен " + lab + " прокси: " + sel);
    
        var focused = document.commandDispatcher.focusedWindow;
        var selection = focused.getSelection().getRangeAt(0).getBoundingClientRect();
        var posX = focused.mozInnerScreenX + selection.left;
        var posY = focused.mozInnerScreenY + selection.bottom - 5;   

        tooltip.showPopup(gBrowser, posX, posY);
        setTimeout(()=> gBrowser.removeChild(tooltip), 3000);
     };
     showTooltip();    
  };
   
})(document.getElementById("contentAreaContextMenu"));

А как сделать переключение по левому клику параметра network.proxy.type между 5 и 2? Подставляяю вместо 0 : 1, но ничего не выходит(
       
cbu.setPrefs("network.proxy.type", cbu.getPrefs("network.proxy.type") ? 0 : 1);

Сам нашел

cbu.setPrefs("network.proxy.type", (cbu.getPrefs("network.proxy.type") == 2 ) ? 5 : 2 )