Может СКМ на кнопке маштаба поможет.
Увы, этот приём не помогает сделать серфинг комфортней.
А нельзя ли добавить в кнопку фичу начального (заданного пользователем) масштаба для впервые посещаемой страницы?
Ведь ФФ где-то хранит список ранее посещенных страниц. Пусть "кнопка" сначала заглядывает в этот список и, если там нет сайта, который в данный момент открывается, масштабировать такую страницу на тот процент, который пользователь прописал в коде кнопки в качестве начального.
Можно такое сделать?
Отсутствует
usalex
У меня сразу две в одной
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%3ECB%20Mouse%20Gestures+%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAWAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgEBAwEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAgEBAwAAAAACAQECAAAAAHdLNaSlZkbqkFY60ZNZO9aSWDrWkVY51o9VONaOVDfWjVI11oxSNdaMUDPWhkww0ZdYOupsQCykAAAAAAIBAQIAAAAAc0k1oNebe//0yrD/+djC/vjWv//418D/+Na///fWv//31r//99W///XTuv/11Lz/9tfA/u3Dqf/Jjm//Zz4qoAAAAAAAAAAAq2tL1vXMsf/w4c327di9++nStfvs1bn77Na7++zWu/vs1rv77NS5+/Tk0Pvt2L377NW4+/Ll0vbtxar/mFk61gAAAAAAAAAAl10/0Pvdxv/q07b71quB/9iuhP/VqX//06J0/9Khcf/SonL/z5pm/+7dzf/q1cH/1ah9/+zStPv22MP/hkww0AAAAAAAAAAAnF9C1vzcxv/kxaT70aBw/9mtg//euJX/6c+3/+zVv//s1sD/6tG5//r18P//////48Wo/+bHpvv22ML/i1Az1gAAAAAAAAAAnWBC1v3eyv/iwp/7ypFY/9qwiP/u3Mr/9+7k//jw6P/48Oj/9+/m//z69///////5862/+XHpvv42cT/jFE01gAAAAAAAAAAnmJE1v7hzv/fvZf7wX06/+LBof/27OP/z5dh/8mLTv/JjE//xIE+//Pl1v/05tn/zJJb/963jfv53cv/jVEz1gAAAAAAAAAAn2JE1v/i0f/dt477u28k/+PDo//47+j/w348/8qNUv/JjVH/xoZH/9+6l//VpXf/vnUw/963jvv53cv/jlM11gAAAAAAAAAAoGNF1v/j0f/duJD7u3Ao/+PDpf/48Oj/w4A//8qNU//JjFH/yYxR/8qOVP/KkFb/wX8+/922jfv63cv/j1Q21gAAAAAAAAAAoWVH1v/i0P/gwJ77w4FD/+bLsP/58uv/yo9X/9Cbaf/Pmmf/z5pn/86YZP/Qm2n/yY9Y/+G/m/v63Mr/kVU31gAAAAAAAAAAo2ZJ1v/hz//kyav7ypRf/+jRuv/58uz/0J9w/9Spfv/UqH3/1Kh9/9Wpfv/VqoD/z59v/+XJqfv53Mn/klc51gAAAAAAAAAApGhK1v/fzf/n0Lf70aR5/+3Zx//69fH/166I/9u3lP/btpP/27aT/9u2k//cuJX/1q2H/+fPtvv42sj/k1g71gAAAAAAAAAAoWZJ0P7fz//s3Mr72riZ/+bPuf/s3Mz/3L2e/97Ao//ewKP/3sCj/97Ao//ewaP/3Luf/+7cy/v428n/kFU50AAAAAAAAAAAunhY1vvTvf/u5Nv27+LU++rax/vq2MX77eDP++3fzvvt38777d/O++3fz/vt38778OLT+/Hm3Pb0zLT/p2dG1gAAAAAAAAAAflM+oOSpi//71L7//d/N/v7ey//+383//d3K//zdyv/83cn//NzJ//vcyP/72sf/+tzK/vTNt//XnH3/ckgzoAAAAAACAQECAAAAAINXQaS4d1fqomZK0aVoS9akZ0rWomZJ1qFkR9agZEbWnmNF1p1hRNacYELWl11A0apqSup4TDakAAAAAAIBAQIAAAAAAgEBAwEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAgEBAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B%28%7B%0A%20%20%20//%20%u0416%u0435%u0441%u0442%u044B%20%u043C%u044B%u0448%u0438%20....%0A%20%20%20GESTURES%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20//%20%u0423%u043F%u0440%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%u0439%20................................%0A%20%20%27W-%27%3A%7Bname%3A%27%u0423%u0432%u0435%u043B%u0438%u0447%u0438%u0442%u044C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%27%2Ccmd%3Afunction%28%29%7B%20FullZoom.enlarge%28%29%20%7D%7D%2C%0A%20%20%27W+%27%3A%7Bname%3A%27%u0423%u043C%u0435%u043D%u044C%u0448%u0438%u0442%u044C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%27%2Ccmd%3Afunction%28%29%7B%20FullZoom.reduce%28%29%20%7D%7D%2C%0A%20%20%27UDU%27%3A%7Bname%3A%27%u0421%u0431%u0440%u043E%u0441%u0438%u0442%u044C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%27%2Ccmd%3Afunction%28%29%7B%20FullZoom.reset%28%29%20%7D%7D%2C%0A%20%20%27L%3CR%27%3A%7Bname%3A%27%u0421%u0431%u0440%u043E%u0441%u0438%u0442%u044C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%27%2Ccmd%3Afunction%28%29%7B%20FullZoom.reset%28%29%20%7D%7D%2C%0A%20%20%27L%27%3A%7Bname%3A%27%u041D%u0430%u0437%u0430%u0434%27%2Ccmd%3Afunction%28%29%7B%20BrowserBack%28%29%20%7D%7D%2C%0A%20%20%27R%27%3A%7Bname%3A%27%u0412%u043F%u0435%u0440%u0451%u0434%27%2Ccmd%3Afunction%28%29%7B%20BrowserForward%28%29%20%7D%7D%2C%0A%20%20//%20%27DR%27%3A%7Bname%3A%27%u041E%u0431%u043D%u043E%u0432%u0438%u0442%u044C%27%2Ccmd%3Afunction%28%29%7B%20gBrowser.reload%28%29%20%7D%7D%2C%0A%20%20%27L%3ER%27%3A%7Bname%3A%27%u041E%u0431%u043D%u043E%u0432%u0438%u0442%u044C%27%2Ccmd%3Afunction%28%29%7B%20gBrowser.reload%28%29%20%7D%7D%2C%0A%20%20%27DR%27%3A%7Bname%3A%27%u041E%u0431%u043D%u043E%u0432%u0438%u0442%u044C%20%u043A%u044D%u0448%27%2Ccmd%3Afunction%28%29%7B%20BrowserReloadSkipCache%28%29%20%7D%7D%2C%0A%20%20%27U%27%3A%7Bname%3A%27%u0421%u0442%u043E%u043F%27%2Ccmd%3Afunction%28%29%7B%20BrowserStop%28%29%20%7D%7D%2C%0A%20%20%7D%2C%0A%0Ainit%3Afunction%28%29%20%7B%0A%20%20%20var%20func%20%3D%20this%3B%0A%0A%20%20%20%5B%22mousedown%22%2C%20%22mousemove%22%2C%20%22mouseup%22%2C%20%22contextmenu%22%2C%20%22draggesture%22%2C%20%22DOMMouseScroll%22%5D%0A%20%20%20%20.forEach%28%28type%29%3D%3E%20addEventListener%28type%2C%20this%2C%20true%2C%20gBrowser%29%20%29%3B%20%0A%7D%2C%0A%0AhandleEvent%3Afunction%28event%29%20%7B%0A%20%20%20%20switch%28event.type%29%20%7B%0A%20%20%20%20%20%20%20%20case%22mousedown%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20event.button%20%3D%3D%202%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._isMouseDownR%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._hideFireContext%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._startGesture%28%20event%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20event.button%20%3D%3D%202%20%26%26%20this._isMouseDownL%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._isMouseDownL%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._isMouseDownR%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._shouldFireContext%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._hideFireContext%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._directionChain%20%3D%20%22L%3ER%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._stopGesture%28event%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20%28%20event.button%20%3D%3D%200%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._isMouseDownL%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20this._isMouseDownR%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._isMouseDownL%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._shouldFireContext%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._hideFireContext%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._directionChain%20%3D%20%22L%3CR%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._stopGesture%28%20event%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%0A%20%20%20%20%20%20%20%20case%22mousemove%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20this._isMouseDownR%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._hideFireContext%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._progressGesture%28%20event%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%0A%20%20%20%20%20%20%20%20case%22mouseup%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20content.xdTrailArea%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20content.xdTrailArea.parentNode.removeChild%28%20content.xdTrailArea%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20content.xdTrailArea%20%3D%20content.document.documentElement.appendChild%28document.createElementNS%28xhtmlns%2C%20%22xdTrailArea%22%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20event.ctrlKey%20%26%26%20event.button%20%3D%3D%202%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._isMouseDownL%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._isMouseDownR%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._shouldFireContext%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._hideFireContext%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._directionChain%20%3D%20%27%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20event.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20XULBrowserWindow.statusTextField.label%20%3D%20%22Reset%20Gesture%22%3B%0A%20%20%20%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%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20this._isMouseDownR%20%26%26%20event.button%20%3D%3D%202%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20this._directionChain%20%29%20this._shouldFireContext%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._isMouseDownR%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._stopGesture%28%20event%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20this._shouldFireContext%20%26%26%20%21this._hideFireContext%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._shouldFireContext%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._displayContextMenu%28%20event%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20%28%20event.button%20%3D%3D%200%20%26%26%20this._isMouseDownL%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._isMouseDownL%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._shouldFireContext%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20%28%20%28event.button%20%3D%3D%200%20%7C%7C%20event.button%20%3D%3D%201%29%20%26%26%20event.target.localName%20%3D%3D%27menuitem%27%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._isMouseDownL%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._shouldFireContext%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20popup%20%3D%20document.getElementById%28%27GesturePopup%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20activeItem%20%3D%20event.target%3B%0A%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%20%20%20%20%20%20%20%20%20%20%20%20switch%28%20popup.getAttribute%28%22gesturecommand%22%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%22WebSearchPopup%22%3A%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%20var%20selText%20%3D%20popup.getAttribute%28%22selectedtext%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20engine%20%3D%20activeItem.engine%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20%21engine%20%29%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20submission%20%3D%20engine.getSubmission%28%20selText%2C%20null%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20%21submission%20%29%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.getElementById%28%27searchbar%27%29.textbox.value%20%3D%20selText%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20gBrowser.loadOneTab%28%20submission.uri.spec%2Cnull%2Cnull%2Csubmission.postData%2Cnull%2Cfalse%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%22ClosedTabsPopup%22%3A%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%20undoCloseTab%28%20activeItem.index%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%22HistoryPopup%22%3A%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%20gBrowser.webNavigation.gotoIndex%28%20activeItem.index%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%22AllTabsPopup%22%3A%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%20gBrowser.selectedTab%20%3D%20gBrowser.mTabs%5BactiveItem.index%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20popup.hidePopup%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%20document.getElementById%28%22statusbar-display%22%29.label%20%3D%20%22%22%20%7D%20catch%28e%29%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20case%22popuphiding%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20popup%20%3D%20document.getElementById%28%27GesturePopup%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20popup.removeEventListener%28%22popuphiding%22%2Cthis%2Ctrue%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20document.documentElement.removeEventListener%28%22mouseup%22%2Cthis%2Ctrue%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20while%28%20popup.hasChildNodes%28%29%20%29%20popup.removeChild%28%20popup.lastChild%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%0A%20%20%20%20%20%20%20%20case%22contextmenu%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20this._isMouseDownL%20%7C%7C%20this._isMouseDownR%20%7C%7C%20this._hideFireContext%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20event.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20event.stopPropagation%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._shouldFireContext%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._hideFireContext%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%0A%20%20%20%20%20%20%20%20case%22DOMMouseScroll%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20this._isMouseDownR%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20event.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20event.stopPropagation%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._shouldFireContext%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._hideFireContext%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._directionChain%20%3D%20%22W%22%20+%20%28%20event.detail%20%3E%200%20%3F%20%22+%22%20%3A%20%22-%22%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._stopGesture%28event%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%0A%20%20%20%20%20%20%20%20case%22draggesture%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20this._isMouseDownL%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%7D%0A%7D%2C%0A%0A_displayContextMenu%3Afunction%28%20event%20%29%20%7B%0A%20%20%20%20var%20evt%20%3D%20event.originalTarget.ownerDocument.createEvent%28%22MouseEvents%22%29%3B%0A%20%20%20%20evt.initMouseEvent%28%22contextmenu%22%2Ctrue%2Ctrue%2Cevent.originalTarget.defaultView%2C0%2Cevent.screenX%2Cevent.screenY%2Cevent.clientX%2Cevent.clientY%2Cfalse%2Cfalse%2Cfalse%2Cfalse%2C2%2Cnull%29%3B%0A%20%20%20%20event.originalTarget.dispatchEvent%28evt%29%3B%0A%7D%2C%0A%0A_startGesture%3Afunction%28%20event%20%29%20%7B%0A%20%20%20%20this._lastX%20%3D%20event.screenX%3B%0A%20%20%20%20this._lastY%20%3D%20event.screenY%3B%0A%20%20%20%20this._directionChain%20%3D%20%22%22%3B%0A%7D%2C%0A%0A_progressGesture%3Afunction%28%20event%20%29%20%7B%0A%20%20%20%20var%20x%20%3D%20event.screenX%2C%20y%20%3D%20event.screenY%3B%0A%20%20%20%20var%20lastX%20%3D%20this._lastX%2C%20lastY%20%3D%20this._lastY%3B%0A%20%20%20%20var%20subX%20%3D%20x-lastX%2C%20subY%3Dy-lastY%3B%0A%20%20%20%20var%20distX%20%3D%20%28%20subX%20%3E%200%20%3F%20subX%20%3A%20%28-subX%29%20%29%2C%20distY%20%3D%20%28%20subY%20%3E%200%20%3F%20subY%20%3A%20%28%20-subY%20%29%20%29%3B%0A%20%20%20%20var%20direction%3B%0A%20%20%20%20if%20%28%20distX%20%3C%2010%20%26%26%20distY%20%3C%2010%20%29%20return%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20if%20%28%20distX%20%3E%20distY%20%29%20direction%20%3D%20subX%20%3C%200%20%3F%20%22L%22%20%3A%20%22R%22%3B%0A%20%20%20%20else%20%0A%20%20%20%20%20%20%20%20%20direction%20%3D%20subY%20%3C%200%20%3F%20%22U%22%20%3A%20%22D%22%3B%0A%0A%20%20%20%20var%20dChain%20%3D%20this._directionChain%3B%0A%20%20%20%20if%20%28%20direction%20%21%3D%3D%20dChain.charAt%28%20dChain.length-1%20%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20dChain%20+%3D%20direction%3B%0A%20%20%20%20%20%20%20%20%20this._directionChain%20+%3D%20direction%3B%0A%20%20%20%20%20%20%20%20%20var%20gesture%20%3D%20this.GESTURES%5BdChain%5D%3B%0A%20%20%20%20%20%20%20%20%20XULBrowserWindow.statusTextField.label%20%3D%20%22%u0416%u0435%u0441%u0442%20%u043C%u044B%u0448%u0438%3A%20%22+%20dChain%20+%20%28%20gesture%20%3F%20%27%20%28%27+%20gesture.name%20+%27%29%27%20%3A%20%27%27%20%29%3B%0A%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20this._lastX%20%3D%20x%3B%0A%20%20%20%20this._lastY%20%3D%20y%3B%0A%7D%2C%0A%0A_stopGesture%3Afunction%28event%29%20%7B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%20dChain%20%3D%20this._directionChain%20%29%20this.GESTURES%5BdChain%5D.cmd%28%20this%2C%20event%20%29%3B%0A%20%20%20%20%20%20%20%20XULBrowserWindow.statusTextField.label%20%3D%20%22%22%3B%0A%20%20%20%20%7D%0A%20%20%20%20catch%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%20XULBrowserWindow.statusTextField.label%20%3D%20%22%u041D%u0435%u0438%u0437%u0432%u0435%u0441%u0442%u043D%u044B%u0439%20%u0436%u0435%u0441%u0442%20%u043C%u044B%u0448%u0438%3A%20%22%20+%20dChain%20%7D%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%20XULBrowserWindow.statusTextField.label%20%3D%20%22%22%20%7D%2C%20600%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20this._directionChain%20%3D%20%22%22%3B%0A%7D%2C%0A%0AshowAlert%3Afunction%28image%2C%20label%2C%20notification%29%20%7B%0A%20%20%20%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%0A%20%20%20%20.showAlertNotification%28image%2C%20label%2C%20notification%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%29%3B%0A%7D%2C%0A%0A_buildPopup%3Afunction%28event%2C%20gestureCmd%29%20%7B%0A%20%20%20%20var%20popup%20%3D%20document.getElementById%28%27GesturePopup%27%29%3B%0A%20%20%20%20if%20%28%20%21popup%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20popup%20%3D%20document.createElement%28%22popup%22%29%3B%0A%20%20%20%20%20%20%20%20%20popup.id%20%3D%20%27GesturePopup%27%3B%0A%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20document.getElementById%28%22mainPopupSet%22%29.appendChild%28%20popup%20%29%3B%0A%20%20%20%20popup.setAttribute%28%22gesturecommand%22%2C%20gestureCmd%20%29%3B%0A%20%20%20%20%0A%20%20%20%20switch%28%20gestureCmd%20%29%20%7B%0A%20%20%20%20%20%20%20%20case%22WebSearchPopup%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20engines%20%3D%20Services.search.getVisibleEngines%28%7B%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20engines.length%20%3C%201%20%29%20throw%22%u041F%u043E%u0438%u0441%u043A%u043E%u0432%u044B%u0435%20%u0441%u0438%u0441%u0442%u0435%u043C%u044B%20%u043D%u0435%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0435%u043D%u044B%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20%28%20var%20i%20%3D%20engines.length%20-%201%3B%20i%20%3E%3D%200%3B--i%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20engine%20%3D%20engines%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20menuitem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.setAttribute%28%22label%22%2C%20engine.name%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20engine.iconURI%20%29%20menuitem.setAttribute%28%22src%22%2C%20engine.iconURI.spec%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20popup.insertBefore%28%20menuitem%2C%20popup.firstChild%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.engine%20%3D%20engine%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20popup.setAttribute%28%22selectedtext%22%2C%20getBrowserSelection%28%29.toString%28%29%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20case%22ClosedTabsPopup%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20%21gPrefService.getBoolPref%28%22browser.sessionstore.enabled%22%29%20%29%20throw%22%u0424%u0443%u043D%u043A%u0446%u0438%u044F%20%u0432%u043E%u0441%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0435%u043D%u0438%u044F%20%u0441%u0435%u0441%u0441%u0438%u0439%20%u043E%u0442%u043A%u043B%u044E%u0447%u0435%u043D%u0430%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20catch%28e%29%7B%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20ss%20%3D%20Cc%5B%22@mozilla.org/browser/sessionstore%3B1%22%5D.getService%28Ci.nsISessionStore%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20ss.getClosedTabCount%28window%29%20%3D%3D0%20%29%20throw%22%u041D%u0435%u0442%20%u0432%u043E%u0441%u0441%u0442%u0430%u043D%u0430%u0432%u043B%u0438%u0432%u0430%u0435%u043C%u044B%u0445%20%u0432%u043A%u043B%u0430%u0434%u043E%u043A%20%u0432%20%u044D%u0442%u043E%u043C%20%u043E%u043A%u043D%u0435.%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20undoItems%20%3D%20eval%28%22%28%22+ss.getClosedTabData%28window%29+%22%29%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20%28%20var%20i%3D0%2C%20LEN%20%3D%20undoItems.length%3B%20i%3CLEN%3B%20i++%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20menuitem%3Dpopup.appendChild%28document.createElement%28%22menuitem%22%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.setAttribute%28%22label%22%2CundoItems%5Bi%5D.title%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.setAttribute%28%22class%22%2C%22menuitem-iconic%20bookmark-item%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.index%20%3D%20i%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20iconURL%20%3D%20undoItems%5Bi%5D.image%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20iconURL%20%29%20menuitem.setAttribute%28%22image%22%2C%20iconURL%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20case%22HistoryPopup%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20sessionHistory%20%3D%20gBrowser.webNavigation.sessionHistory%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20sessionHistory.count%3C1%20%29%20throw%22%u041D%u0435%u0442%20%u0438%u0441%u0442%u043E%u0440%u0438%u0438%20%u0432%20%u044D%u0442%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435.%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20curIdx%20%3D%20sessionHistory.index%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20%28%20var%20i%20%3D%200%2C%20shc%20%3D%20sessionHistory.count%3B%20i%20%3C%20shc%3B%20i++%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20entry%20%3D%20sessionHistory.getEntryAtIndex%28i%2Cfalse%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20%21entry%20%29%20continue%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20menuitem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20popup.insertBefore%28menuitem%2Cpopup.firstChild%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.setAttribute%28%22label%22%2Centry.title%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20iconURL%20%3D%20Cc%5B%22@mozilla.org/browser/favicon-service%3B1%22%5D%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.getService%28Ci.nsIFaviconService%29.getFaviconForPage%28entry.URI%29.spec%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.style.listStyleImage%20%3D%20%22url%28%22+iconURL+%22%29%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20catch%28e%29%7B%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.index%20%3D%20i%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20i%3D%3DcurIdx%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.style.listStyleImage%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.setAttribute%28%22type%22%2C%22radio%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.setAttribute%28%22checked%22%2C%22true%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.className%20%3D%20%22unified-nav-current%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20activeItem%20%3D%20menuitem%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.className%20%3D%20i%20%3C%20curIdx%20%3F%20%22unified-nav-back%20menuitem-iconic%22%20%3A%20%22unified-nav-forward%20menuitem-iconic%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20case%22AllTabsPopup%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20tabs%20%3D%20gBrowser.mTabs%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20tabs.length%20%3C%201%20%29%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20%28%20var%20i%3D0%2C%20LEN%20%3D%20tabs.length%3B%20i%20%3C%20LEN%3B%20i++%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20menuitem%20%3D%20popup.appendChild%28document.createElement%28%22menuitem%22%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20tab%20%3D%20tabs%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%20bookmark-item%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.setAttribute%28%22label%22%2C%20tab.label%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.setAttribute%28%22crop%22%2C%20tab.getAttribute%28%22crop%22%29%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.setAttribute%28%22image%22%2C%20tab.getAttribute%28%22image%22%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.index%20%3D%20i%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20tab.selected%20%29%20menuitem.setAttribute%28%22style%22%2C%20%22color%3A%20red%3B%20font-weight%3A%20bold%3B%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20tab.hasAttribute%28%27unread%27%29%20%29%20menuitem.setAttribute%28%22style%22%2C%20%22color%3A%20blue%3B%22%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20document.popupNode%20%3D%20null%3B%0A%20%20%20%20document.tooltipNode%20%3D%20null%3B%0A%20%20%20%20popup.addEventListener%28%22popuphiding%22%2C%20this%2C%20true%29%3B%0A%20%20%20%20popup.openPopup%28%20null%2C%20%22%22%2C%20event.clientX%2C%20event.clientY%2C%20false%2C%20false%20%29%3B%0A%20%20%20%20document.documentElement.addEventListener%28%22mouseup%22%2C%20this%2C%20true%29%3B%0A%7D%0A%7D%29.init%28%29%3B%0A%0A%0A%0A%0A//%20%u041A%u043D%u043E%u043F%u043A%u0430%20%u0434%u043B%u044F%20%u0443%u043F%u0440%u0430%u0432%u043B%u0435%u043D%u0438%u044F%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%u043E%u043C%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0432%20%u0430%u0434%u0440%u0435%u0441%u043D%u043E%u0439%20%u0441%u0442%u0440%u043E%u043A%u0435%2C%20%u043E%u0442%2027.11.2017.%20..........................%0A%28%28%29%3D%3E%20%7B%0A%20%20%20//%20%u0423%u0434%u0430%u043B%u0438%u0442%u044C%20%u0438%u0437%20%u0430%u0434%u0440%u0435%u0441%u043D%u043E%u0439%20%u0441%u0442%u0440%u043E%u043A%u0438%20FF51%20%u0441%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u0443%u044E%20%u043A%u043D%u043E%u043F%u043A%u0443%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%u0430%20....%0A%20%20%20var%20but%20%3D%20document.getElementById%28%27urlbar-zoom-button%27%29%3B%0A%20%20%20if%20%28but%29%20but.style.display%20%3D%20%22none%22%3B%0A%20%20%20%0A%20%20%20//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u0432%20%u0430%u0434%u0440%u0435%u0441%u043D%u043E%u0439%20%u0441%u0442%u0440%u043E%u043A%u0435%20%u043A%u043D%u043E%u043F%u043A%u0443%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%u0430%20....%0A%20%20%20var%20zoomButton%20%3D%20document.createElement%28%22statusbarpanel%22%29%3B%0A%20%20%20var%20urlbarIcons%20%3D%20document.getElementById%28%22urlbar-icons%22%29%20%7C%7C%20document.getElementById%28%22page-action-buttons%22%29%3B%20//%20FF57%0A%20%20%20urlbarIcons.insertBefore%28zoomButton%2C%20urlbarIcons.lastChild%29%3B%20//%20%u043F%u0435%u0440%u0435%u0434%20%u043F%u043E%u0441%u043B%u0435%u0434%u043D%u0435%u0439%20%u043A%u043D%u043E%u043F%u043A%u043E%u0439%20%u0430%u0434%u0440%u0435%u0441%u043D%u043E%u0439%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%20%20%20addDestructor%28%28%29%3D%3E%20zoomButton.remove%28%29%29%3B%0A%20%20%20%20%20%0A%20%20%20updateZoomButton%28%29%3B%20%0A%20%20%20zoomButton.id%20%3D%20%22zoomButton%22%3B%0A%20%20%20zoomButton.setAttribute%28%22context%22%2C%20%22event.stopPropagation%28%29%22%29%3B%0A%20%20%20zoomButton.style.cssText%20%3D%20%22-moz-appearance%3A%20none%3B%20border%3A%200%3B%20margin-right%3A%20-1px%3B%22%3B%20//%20Css%20%u0441%u0442%u0438%u043B%u044C%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%u0430%20%20%20%0A%20%20%20zoomButton.tooltipText%20%3D%20%22%u041B%3A%20%u041C%u0435%u043D%u044F%u0442%u044C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%u043B%u0438%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%5Cn%u0421%3A%20%u0415%u0434%u0438%u043D%u044B%u0439%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%20%u0434%u043B%u044F%20%u0432%u0441%u0435%u0445%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%20%5Cn%u041F%3A%20%u0421%u0431%u0440%u043E%u0441%u0438%u0442%u044C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%20%u043D%u0430%20100%25%20%22%3B%0A%0A%20%20%20%0A%20%20%20//%20%u041E%u0442%u0441%u043B%u0435%u0436%u0438%u0432%u0430%u0442%u044C%20%u043A%u043B%u0438%u043A%u0438%20%u043D%u0430%20%u043A%u043D%u043E%u043F%u043A%u0435%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%u0430%20....%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20addEventListener%28%22click%22%2C%20e%3D%3E%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20ZoomManager.toggleZoom%28%29%3B%20//%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0440%u0435%u0436%u0438%u043C%20%u0438%u0437%u043C%u0438%u043D%u0435%u043D%u0438%u044F%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%u0430%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20%7B%20//%20%u0435%u0434%u0438%u043D%u044B%u0439%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%20%u0434%u043B%u044F%20%u0432%u0441%u0435%u0445%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%0A%20%20%20%20%20%20%20%20%20%20%20cbu.isPref%28%22CB.zoom.allEvenly%22%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20cbu.setPrefs%28%22CB.zoom.allEvenly%22%2C%20%21cbu.getPrefs%28%22CB.zoom.allEvenly%22%29%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20cbu.setPrefs%28%22CB.zoom.Percent%22%2C%20ZoomManager.zoom.toFixed%282%29%20%29%3B%0A%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%20updateZoomButton%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20if%20%28%20e.button%20%3D%3D%202%20%29%20FullZoom.reset%28%29%3B%20//%20%u0441%u0431%u0440%u043E%u0441%u0438%u0442%u044C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%7D%2C%20false%2C%20zoomButton%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20//%20%u041C%u0435%u043D%u044F%u0442%u044C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%20%u043A%u043E%u043B%u0435%u0441%u0438%u043A%u043E%u043C%20%u043C%u044B%u0448%u0438%20%u043D%u0430%20%u043A%u043D%u043E%u043F%u043A%u0435%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%u0430%20....%0A%20%20%20addEventListener%28%22DOMMouseScroll%22%2C%20e%3D%3E%20%7B%0A%20%20%20%20%20%20e.detail%20%3E%200%20%3F%20FullZoom.reduce%28%29%20%3A%20FullZoom.enlarge%28%29%3B%0A%20%20%20%7D%2C%20false%2C%20zoomButton%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%0A%20%0A%20%20%20//%20%u0421%u043B%u0435%u0434%u0438%u043C%20%u0437%u0430%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u0435%u043C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%u0430%20%u0438%20%u0437%u0430%u043F%u0443%u0441%u043A%u0430%u0435%u043C%20%u043E%u0431%u043D%u043E%u0432%u043B%u0435%u043D%u0438%u0435%20%u043A%u043D%u043E%u043F%u043A%u0438%20....%0A%20%20%20var%20str%20%3D%20%22%7B%20setTimeout%28%28%29%3D%3E%20%7B%20updateZoomButton%28%29%20%7D%2C%2050%29%3B%22%3B%0A%20%20%20var%20handleEvent%20%3D%20parseInt%28Services.appinfo.version%29%20%3E%2033%20%3F%20FullZoom.handleEvent%20%3A%20FullZoom._handleMouseScrolled%3B%0A%20%20%20var%20array%20%3D%20%5BFullZoom.reset%2C%20FullZoom.reduce%2C%20FullZoom.enlarge%2C%20ZoomManager.toggleZoom%2C%20handleEvent%5D%3B%0A%20%20%20array.forEach%28func%3D%3E%20%7B%20setTimeout%28%28%29%3D%3E%20%7B%20eval%28%20%28func.toString%28%29.replace%28%27_%27%2C%20%27.%27%29.match%28/function%20%28%5B%5E%28%5D*%29%5C%28/%29%5B1%5D%20+%20%22%20%3D%20%22%20+%20func.toString%28%29.replace%28%22%7B%22%2C%20str%29%29%20%29%7D%2C%2050%29%20%7D%29%3B%20%0A%20%20%20addDestructor%28%28%29%3D%3E%20%7B%20%0A%20%20%20%20%20%20array.forEach%28func%3D%3E%20%7B%20eval%28%20%28func.toString%28%29.replace%28%27_%27%2C%20%27.%27%29.match%28/function%20%28%5B%5E%28%5D*%29%5C%28/%29%5B1%5D%20+%20%22%20%3D%20%22%20+%20func.toString%28%29%29.replace%28str%2C%22%7B%22%29%20%29%20%7D%29%3B%20%20%0A%20%20%20%7D%29%3B%20%20%20%0A%20%20%20%0A%20%20%20%0A%20%20%20//%20%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u0442%u0435%u043A%u0443%u0449%u0438%u0439%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u043D%u0430%20%u043A%u043D%u043E%u043F%u043A%u0435%20%u0438%20%u0438%u0437%u043C%u0435%u043D%u044F%u0442%u044C%20%u0446%u0432%u0435%u0442%20%u0438%20%u0448%u0440%u0438%u0444%u0442%20%u043E%u0442%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u044F%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%u0430%20....%0A%20%20%20function%20updateZoomButton%28e%29%20%7B%0A%20%20%20%20%20%20zoomButton.label%20%3D%20Math.round%28ZoomManager.zoom*100%29%20+%20%22%25%22%3B%20%0A%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20%7B%20%20%0A%20%20%20%20%20%20%20%20%20zoomButton.style.fontWeight%20%3D%20ZoomManager.useFullZoom%20%3F%20%27%27%20%3A%20%27bold%27%3B%0A%20%20%20%20%20%20%20%20%20zoomButton.style.color%20%3D%20cbu.getPrefs%28%22CB.zoom.allEvenly%22%29%20%3F%20%22red%22%20%3A%20%22%22%3B%0A%20%20%20%20%20%20%7D%2C%205%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20//%20%u0437%u0430%u043F%u043E%u043C%u043D%u0438%u0442%u044C%20%u0442%u0435%u043A%u0443%u0449%u0438%u0439%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%20%u0432%20%27about%3Aconfig%27%0A%20%20%20%20%20%20if%20%28%20e%20%3D%3D%20undefined%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20try%20%7B%20window.clearTimeout%28zoomButton.prefTimeout%29%20%7D%20catch%28e%29%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20zoomButton.prefTimeout%20%3D%20window.setTimeout%28%28%29%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20cbu.setPrefs%28%22CB.zoom.Percent%22%2C%20ZoomManager.zoom.toFixed%282%29%20%29%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%7D%2C%20250%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%0A%20%20%20%7D%3B%0A%20%20%20%20%20%0A%20%20%20%20%20%0A%20%20%20//%20%u0423%u0441%u0442%u0430%u043D%u0430%u0432%u043B%u0438%u0432%u0430%u0442%u044C%20%u0435%u0434%u0438%u043D%u044B%u0439%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%20%u0434%u043B%u044F%20%u0432%u0441%u0435%u0445%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%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....%0A%20%20%20addEventListener%28%22TabAttrModified%22%2C%20e%3D%3E%20%7B%0A%20%20%20%20%20%20if%20%28%20e.target.linkedBrowser.currentURI.spec%20%21%3D%3D%20gBrowser.currentURI.spec%20%29%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20if%20%28%20cbu.getPrefs%28%22CB.zoom.allEvenly%22%29%20%26%26%20content.location.protocol.startsWith%28%22http%22%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20var%20value%20%3D%20cbu.getPrefs%28%22CB.zoom.Percent%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20if%20%28%20ZoomManager.zoom.toFixed%282%29%20%3D%3D%20value%20%29%20return%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20gBrowser.markupDocumentViewer%5BZoomManager.useFullZoom%20%3F%20%27fullZoom%27%20%3A%20%27textZoom%27%5D%20%3D%20value%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20updateZoomButton%28e%29%3B%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%7D%2C%200%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%0A%20%20%20%20%20%20else%20%0A%20%20%20%20%20%20%20%20%20%20%20updateZoomButton%28e%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%7D%2C%20true%2C%20gBrowser.tabContainer%29%3B%20%20%20%0A%7D%29%28%29%3B%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.tooltipText%20%3D%20%22CB%20Mouse%20Gestures+%20%20%5Cn%u0417%u0430%u043F%u0443%u0441%u043A%u0430%u0435%u0442%20%u0436%u0435%u0441%u0442%u0438%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u041F%u041A%u041C%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%5Cn%u041B%3A%20%u0420%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u044D%u0442%u0443%20%u043A%u043D%u043E%u043F%u043A%u0443%22%3B%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B//%20%u0420%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u044D%u0442%u0443%20%u043A%u043D%u043E%u043F%u043A%u0443%20....%0Acustombuttons.editButton%28this%29%3B%0A%0A%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 (23-12-2017 21:56:09)
Отсутствует
Mishania
А кто автор этой кнопки (откуда она взялась)?
Вот только у меня при её использовании не появляется индикатор масштаба в адресной строке.
После использования и последующего удаления кнопки "Изменить масштаб" штатный индикатор пропал и теперь я не знаю как его восстановить.
Я удалил из этой двойной кнопки код, относящийся к "Изменить масштаб" и оставил только жесты (кручу колёсиком с зажатой правой кнопкой).
Но для меня кнопка жестов избыточна. Мне жесты не нужны, а нужно только изменение масштаба.
Если автор добавит в свою кнопку метод "Колёсико с зажатой ПКМ" будет самое то.
Отсутствует
Изменять масштаб колёсиком мыши при зажатой правой кнопке
это может расширение MouseZoomer
Отсутствует
Бумбик
Спасибо.
Но, у этого расширения хоть и настраиваемый, но фиксированный шаг масштаба.
А у меня своя нелинейная шкала, по которой кнопка отрабатывает на ура.
К тому же, в расширении после отжатия ПКМ выскакивает контекстное меню страницы, чего быть не должно - конкретная недоработка.
Поэтому попробую все же уговорить автора добавить в кнопку метод "Колёсико с зажатой ПКМ"
Отредактировано usalex (24-12-2017 03:10:22)
Отсутствует
Бумбик
Кнпоку для CB делали по моей просьбе, специально чтоб заменить это расширение.
usalex
Я уже и не помню кто делал, но точно но на этом форуме, по моей просьбе и если не ошибаюсь вам даже в другой ветке ссылку давали именно на первоисточник. Если индикатор не появляется, то что-то у вас не так. Попробуйте поэкспериментировать на чистом профиле и кнопку на панель.
Отсутствует
...если не ошибаюсь вам даже в другой ветке ссылку давали именно на первоисточник...
Да, давали - там я её и взял. Кнопку выложили вы с просьбой исправить для работы с e10s.
Доработку сделал bunda1 и теперь я этой кнопкой пользуюсь.
Похоже, много полезных кнопок просто разбросано по форуму и о них можно так никогда и не узнать
Отсутствует
уговорить
addEventListener("wheel", { flag: false, handleEvent(e) {this[e.type](e);}, contextmenu(e) { this.flag = e.preventDefault(); window.removeEventListener("contextmenu", this); }, wheel(e) { if (e.buttons != 2 || !gBrowser.selectedBrowser.matches(":hover")) return; if (!this.flag) this.flag = !window.addEventListener("contextmenu", this); e.preventDefault(); FullZoom[e.deltaY > 0 ? "reduce" : "enlarge"](); } }, false, gBrowser); FullZoom._globalValue = 1.25; addDestructor(() => delete FullZoom._globalValue);
Отсутствует
Dumby
Вот это да!!! Просто рождественский подарок какой-то...
Спасибо вам огромное!
Мало того, что добавили удобнейший способ изменения масштаба, так ещё и реализовали фичу, которую я уж посчитал нереализуемой (с помощью кнопок): "Кастомный масштаб для впервые посещаемых страниц".
Вау! Супер!
Отсутствует
Кнопку выложили вы с просьбой исправить для работы с e10s.
Доработку сделал bunda1 и теперь...
А, кстати, зачем делать для кнопки поддержку многопроцессности, если само расширение Custom Buttons при установке отключает эту самую многопроцессность?
Dumby, спасибо за подробное разъяснение вопроса!
(свою ошибку поправил но слово все равно какое-то корявое... надо бы какую-нибудь замену ему подобрать)
Отредактировано usalex (07-01-2018 23:54:47)
Отсутствует
А, кстати, зачем делать для кнопки поддержку многопроцессорности, если само расширение Custom Buttons при установке отключает эту самую многопроцессорность?
Само расширение Custom Buttons полностью совместимо с многопроцессностью.
Более того, оно (ну, может, за исключением своего протокола),
не имеет к многопроцессности никакого отношения совсем.
Да, лиса может посмотреть, что мол завелось расширение,
у которого не заявлено, что оно совместимо с e10s,
и, на основании этого, выключить режим многопроцессности,
чтобы пользователь расширения был доволен.
А в Custom Buttons не заявлено, что оно совместимо с e10s только потому,
чтобы кнопки могли воспользоваться всем тем, что хоть как-то, иногда,
обеспечивает работу немногопроцессного кода в многопроцессном Firefox.
Те, для кого многопроцессный Firefox является осознанным выбором,
уже давно переключили соответствующие настройки принудительно,
и, обретя независимость, и все приемущества и недостатки такого выбора,
видят, что некоторые кнопки не работают вообще, отсюда и просьбы исправить.
Возможно, некоторые из них, осознавая, что в многопроцессном Firefox,
следует, по-возможности, всячески избегать использования немногопроцессного кода,
так как от этого только тормоза́ и глюки, даже если код работает,
тоже могут попросить переписать код кнопки под e10s.
Вот такой вот резон «зачем делать для кнопки поддержку многопроцессорности»
Отсутствует
Я указал для разных сайтов разные значения масштаба,
а после перезапуска браузера они сбиваются на стандартный масштаб,
это из за того что у меня очищаются куки после перезапуска?
Отсутствует
bunda1
Вы бы не могли сделать, если возможо, чтобы значения масштаба для каждого сайта хранились не в настройках сайта?
Настройки хочется тоже очищать после закрытия браузера, так как там, оказывается, хранится информация Автономное-веб сожержимое и данные пользователя
Отредактировано Stkvsky (05-02-2018 14:03:48)
Отсутствует
bunda1
Вы бы не могли сделать, если возможо, чтобы значения масштаба для каждого сайта хранились не в настройках сайта?
Можно, но сложно. Я не возьмусь.
Отсутствует
bunda1 - подскажите, как включить "Колесико мыши" над всей панелью кнопок, а не только на кнопке Zoom?
Удобнее при клике на кнопку "Режим чтения" сразу покрутить Колесико и установить нужный масштаб. Есть вариант с gURLBar, но это не то...
в DOM Инспекторе нашёл панель кнопок "nav-bar-customization-target" (hbox), но как её в вашу кнопку добавить?
// Менять масштаб колесиком мыши на кнопке масштаба zoomButton или адресной строке gURLBar addEventListener("DOMMouseScroll", e=> { e.detail > 0 ? FullZoom.reduce() : FullZoom.enlarge(); }, false, gURLBar);
Отсутствует
Dobrov
https://forum.mozilla-russia.org/viewto … 60#p726960
Отредактировано Stkvsky (11-02-2018 01:58:24)
Отсутствует
Внимательней, я уже отметил, что вариант с gURLBar мне не подходит! , нужен Zoom при прокрутке над панелью кнопок!
Отсутствует
Удобнее при клике на кнопку "Режим чтения" сразу покрутить Колесико и установить нужный масштаб
// Менять масштаб колесиком мыши на кнопке масштаба zoomButton или адресной строке gURLBar var urlbarIcons = document.getElementById("urlbar-icons") || document.getElementById("page-action-buttons"); // FF57 addEventListener("DOMMouseScroll", e=> { e.detail > 0 ? FullZoom.reduce() : FullZoom.enlarge(); }, false, urlbarIcons);
Отсутствует
bunda1 - спасибо, но для адресной строки и так работает gURLBar, а иконку ReaderMode я в строке адреса скрыл.
У меня отдельная кнопка CustomButtons - вкл/выкл Режим чтения (toggleReaderMode)
как включить "Колесико мыши" над всей панелью кнопок?
или хотя бы над отдельной кнопкой cb-name="Reader mode", но чтобы сохранилось изменение масштаба также и в адресной строке
Отредактировано Dobrov (13-02-2018 02:45:13)
Отсутствует
как включить "Колесико мыши" над всей панелью кнопок?
Что ты называешь панелью кнопок?
или хотя бы над отдельной кнопкой cb-name="Reader mode", но чтобы сохранилось изменение масштаба также и в адресной строке
В инициализацию кнопки Reader mode:
Отсутствует
Что ты называешь панелью кнопок?
это #nav-bar - нужен такой функционал: нажать кнопку "Reader Mode" в #nav-bar-е, затем изменить масштаб Колёсиком мыши.
Добавил код в инициализацию, только ролик наоборот работал, поменял условия:
А вариант [CB]Изменить масштаб, работающий над всей #nav-bar возможно сделать?
Отредактировано Dobrov (13-02-2018 11:27:37)
Отсутствует