Нашёл ссылку где описывается схема http://opennet.ru/openforum/vsluhforumID3/47886.html:
новая схема подразумевает помещение нового таба сразу после текущего таба, из которого было инициировано открытие ссылки. Если таким образом уже была открыта ссылка, то новый таб будет открыт справа от последней дочерней вкладки.
Так открываются ссылки со страницы. Я хочу так же открывать закладки из библиотеки и fvd. Раньше в официальной вики картинку видел, но теперь не найду ссылку.
Отредактировано KOT040188 (15-02-2016 22:31:03)
Вы думаете у котов лёгкая жизнь? А вы попробуйте целый день лизать меховую шапку!
Отсутствует
Так открываются ссылки со страницы. Я хочу так же открывать закладки из библиотеки и fvd. Раньше в официальной вики картинку видел, но теперь не найду ссылку.
Понятно, я пока не знаю как такое сделать.
Отсутствует
Понятно, я пока не знаю как такое сделать.
Может так
... if ( /ssi_restore|openContainer|handleLinkClick|nsContextMenu/.test(err) ) return; var places = "chrome://browser/content/places/places.xul"; if (gBrowser.currentURI.spec == places && err.includes(places)) { var tab = gBrowser._lastRelatedTab || gBrowser.selectedTab; gBrowser.moveTabTo(newTab, tab._tPos + 1); gBrowser._lastRelatedTab = newTab; return; } ...
Отсутствует
Может так
Вроде работает если открыть библиотеку в вкладке. Спасибо
KOT040188
// Открывать любую новую вкладку справа от текущей ............ addEventListener("TabOpen", (e)=> { var newTab = e.target, tabpos = gBrowser.selectedTab._tPos, err = new Error().stack; // если восстановление сессии, открыть ссылки или открыть всё во вкладках из папки закладок if ( /ssi_restore|openContainer|handleLinkClick|nsContextMenu/.test(err) ) return; var places = "chrome://browser/content/places/places.xul"; if (gBrowser.currentURI.spec == places && err.includes(places)) { var tab = gBrowser._lastRelatedTab || gBrowser.selectedTab; gBrowser.moveTabTo(newTab, tab._tPos + 1); gBrowser._lastRelatedTab = newTab; return; } /undoCloseTab/.test(err) ? setTimeout(()=> gBrowser.moveTabTo(newTab, tabpos + 1), 50) // если восстановление вкладки : gBrowser.moveTabTo(newTab, tabpos + 1); }, false, gBrowser.tabContainer );
Отсутствует
Dumby
bunda1
Спасибо работает! А для fvd как запилить?
Отредактировано KOT040188 (16-02-2016 14:56:52)
Вы думаете у котов лёгкая жизнь? А вы попробуйте целый день лизать меховую шапку!
Отсутствует
А для fvd как запилить?
// Открывать любую новую вкладку справа от текущей ............ addEventListener("TabOpen", (e)=> { var newTab = e.target, tabpos = gBrowser.selectedTab._tPos, err = new Error().stack; // если восстановление сессии, открыть ссылки или открыть всё во вкладках из папки закладок if ( /ssi_restore|openContainer|handleLinkClick|nsContextMenu/.test(err) ) return; var places = "chrome://browser/content/places/places.xul"; if ( err.includes("fvd.speeddial") || (gBrowser.currentURI.spec == places && err.includes(places))) { var tab = gBrowser._lastRelatedTab || gBrowser.selectedTab; gBrowser.moveTabTo(newTab, tab._tPos + 1); gBrowser._lastRelatedTab = newTab; return; } /undoCloseTab/.test(err) ? setTimeout(()=> gBrowser.moveTabTo(newTab, tabpos + 1), 50) // если восстановление вкладки : gBrowser.moveTabTo(newTab, tabpos + 1); }, false, gBrowser.tabContainer );
Отсутствует
gBrowser.mCurrentTab.label == 'FVD Speed Dial' ||
Смотри,
то эта вкладка откроется после последней вкладки,
которая была открыта из fvd-вкладки, а не после самой fvd-вкладки.
Я не знаю противоречит ли это концепции кнопки.
Если да, то лучше что-то типа err.includes("fvd.speeddial") ||
Отсутствует
Я не знаю противоречит ли это концепции кнопки.
Если да, то лучше что-то типа err.includes("fvd.speeddial") ||
Спасибо, наверно это противоречит концепции кнопки, поэтому положил в код err.includes("fvd.speeddial").
Отсутствует
bunda1 Dumby
Большое спасибо, теперь всё идеально!
Отредактировано KOT040188 (17-02-2016 17:29:38)
Вы думаете у котов лёгкая жизнь? А вы попробуйте целый день лизать меховую шапку!
Отсутствует
А можно ли сделать так, что при наборе текста выскакивала полноценная панель поиска и не пряталась сама по себе? Можно ли сделать добавление закладки через звёздочку в последнюю выбранную папку, а не неподшитые закладки? А во всплывпющей из звёхдочки панели выбор папки был сразу развёрнут?
Отредактировано KOT040188 (20-02-2016 02:13:19)
Вы думаете у котов лёгкая жизнь? А вы попробуйте целый день лизать меховую шапку!
Отсутствует
А можно ли сделать так, что при наборе текста выскакивала полноценная панель поиска и не пряталась сама по себе? Можно ли сделать добавление закладки через звёздочку в последнюю выбранную папку, а не неподшитые закладки? А во всплывпющей из звёхдочки панели выбор папки был сразу развёрнут?
Отредактировано KOT040188 (20-02-2016 03:13:19)
Может кто поможет?
Вы думаете у котов лёгкая жизнь? А вы попробуйте целый день лизать меховую шапку!
Отсутствует
Здравствуйте, есть кнопка "Открыть страницу или выделенную ссылку в другом браузере" как сделать чтоб при наведении на кнопку открывалось меню той кнопки?
// Настройка функций кликов мыши ................. this.onclick = function(e) { if ( e.button == 0 ) menuPopup.showPopup(this, -1, -1, "popup", "bottomleft", "topleft"); }; // Объявляем настройки и переменные для этой вкладки ................. var autoClose = true; // true => автоматически закрывать меню var dropmarker = false; // true => добавлять дропмаркер у кнопки const pref = Application.prefs; if ( dropmarker ) this.type = "menu"; const alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService); // Проверить наличие строки в about:config и если не существует записать пути к браузерам по умолчанию ................. const allPath = "C:\\Program Files\\Internet Explorer\\iexplore.exe,C:\\Documents and Settings\\Администратор\\Local Settings\\Application Data\\Google\\Chrome\\Application\\chrome.exe,C:\\Program Files\\Opera\\Opera.exe,C:\\Program Files\\Maxthon\\Bin\\Maxthon.exe,C:\\Program Files\\SeaMonkey\\seamonkey.exe"; if ( !pref.getValue("CB.OpenWith.pathToBrowser", 0) ) { pref.setValue("CB.OpenWith.pathToBrowser", allPath ); pref.setValue("CB.OpenWith.removeMenuitem", ""); }; // Создать меню для кнопки ................. var array = [ { label: "Internet Explorer", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAABf2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjarZExS0JhFIaf71q0mA1dovFCFg0WogRJLeoggcNNHFRa9Ko3w/TjerOCfkKD0FItWf2BhqgpaI9agiCIfkMQtITchq9wKSLohQPPeZdz3nNAOy9KWdeA9YbrZFIJI5cvGEOPDDAKAEWrJeOmmeZHvT0gAO5nilLW+Zv8Ti5fAKEDuq14GtBLihcBfdOVLggT0K3VYhlEGQg52UwSRAcI2Iq7QKCk+AwItC3bBXENhBvlWgPECzBfrrQs0KYB25KOC1oHCObyBUOt1uxCbAJ8u32vtA+XVzB+0/eCRzCyABd3fe91GQGIsftWNRoBQPiTMPjsea+TMLQHvY7nvR97Xu8EfE9wvWZtOO3PuwgtCr/1Kpvq1Q9Azf2eVX4AwnD6ANkdSN/CwSFMVWFkBUw/ZGNo0bmvUrcCYLiVSSUM02lWa/UK/yy3suUCJJty26nZq64Rl7JeCRlLDWs2ZETC4Rgf5HRpEzoTj48AAAAgY0hSTQAAbZYAAHOMAAD2MgAAgUIAAHBtAADjXwAAMXgAABN0+ysqDQAAAv5JREFUeNqk0n1MTWEcB/Dvee655957dDv3VjepuUJohRHd0YSsoVHG2IwhsxUbxlrYbOafsmHzOsbGGNPQojEvxai8TBSSNKu8leqme+q+nvfjr27hT9+/nu3ZPvs9z+9L6bqO/wnBf4YeOlAU9e+tKZKl2QgHBVCyIHkQ+uVNcpBxWxabNq+ZacwzEZipoSeMBMwOZ0bs9KxCLjFlvslqiw3JDEVEj2fdmLKW3VM/pcmdqv3mM+1Zj1cf/BugYtJyShLmrdprjIwmKgzwiiymj+1FafZ1JHubUP7chWMP1doXVZWLaKiWPwD7jCVH47PWF+m0BbqZg0BsyJvWhsN5N+D97Efx/TWo64xFgvAdntd3rwgd1SfDf8DEOLNts5YVCZoRMEdhgFdRkN2M0hX1eHytoamwPDfIjx47h6ME8BJBYlrmhj7leyAMEGfajhBhYTTb4Fds2Jh0Sy/NC1GPGv3dW845D7p73vTTbvUQFuVnqAYruvvb4bXPnBMGBEtsujugQLNw2JrdgeO5nVRl20Tsbt7jMBaMKo+XZKKIAVkUBfh4QAoy0E1xKfTwylirRuyYn9qDM8su4cmXWdhavx+qRtGsCaCtAFFtRj0gQTdYoPkHIfX/ZIYBWQ86ooSIslVX0VrrUdYf6qkWuBKFYzTC2UyIYAiEoCDwfsUgCSKlen1E+drCDwN9XQ1HM7tz4ro6sMl9g/T1HrinVJ0/PTCyV8mzl9pX7ipWewNEDXyFroiNYWAu+/TOxhhDzsG6bXgfnULG7ys7ZXh31uVvqKnQNMicK32Jde3OwpDEMgNN3ZDe1kFueVAT7sHdYlPF1PiElVk/SmGwTgI7ORUxC8xgWEAngKgD3i+Ar9UDX9sH8A/O10ovr+WEJ1g8wby86ELXid7QRbgyl2+PdkoG8WMSApwdEk1D9KmQ3YPAj08Qay7fk19dzwcQHC4SoYySoLSPbq+ulNVmRuEXrrZMckXDMYXIVCRE3oOB1vq+/pe3y0Lfmo8A8ADA7wEATrdVy5ywgXEAAAAASUVORK5CYII=" }, { label: "Google Chrome", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAABf2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjarZExS0JhFIaf71q0mA1dovFCFg0WogRJLeoggcNNHFRa9Ko3w/TjerOCfkKD0FItWf2BhqgpaI9agiCIfkMQtITchq9wKSLohQPPeZdz3nNAOy9KWdeA9YbrZFIJI5cvGEOPDDAKAEWrJeOmmeZHvT0gAO5nilLW+Zv8Ti5fAKEDuq14GtBLihcBfdOVLggT0K3VYhlEGQg52UwSRAcI2Iq7QKCk+AwItC3bBXENhBvlWgPECzBfrrQs0KYB25KOC1oHCObyBUOt1uxCbAJ8u32vtA+XVzB+0/eCRzCyABd3fe91GQGIsftWNRoBQPiTMPjsea+TMLQHvY7nvR97Xu8EfE9wvWZtOO3PuwgtCr/1Kpvq1Q9Azf2eVX4AwnD6ANkdSN/CwSFMVWFkBUw/ZGNo0bmvUrcCYLiVSSUM02lWa/UK/yy3suUCJJty26nZq64Rl7JeCRlLDWs2ZETC4Rgf5HRpEzoTj48AAAAgY0hSTQAAbZYAAHOMAAD2MgAAgUIAAHBtAADjXwAAMXgAABN0+ysqDQAAAzZJREFUeNpsk01oHAUYhp+Z2dnd7Mxmt7vJmqTJttk03QRCq6BSa4xYzMEg9mBEeymIRvSg3oqCBIUKgoI3vVjxoqAoBSvF4kG0jdg/WluLqZqkSdls9n9ndmdmZ3Z+PLQqVD94b9/7nN5H4D8nk5SS2cmwsW9YFHYhIBRcf33Z6f+57tf+BBMI/vkW/i2KqPSkn+1LvHUwFjmUQU4RQNf36NCl5Fr6d2b3+KdG903dt2+AewcgGt393OT4h++66gFD70BYRZRCmI5DrdmgYzcQ0LmGv37Ukp/e9NtnwUcCkGQ5Pf3CvScnd07te7iuElcGSI3k8dUUoqrSm8iAHcJum2xzmsmc7M4uIX/VDXxdAsjv3/nG7PMPzlcFuMvIMjqwi48CmffS2/lCjFF0NSLZLEVfoFYtM+LZSWG7HPul5X0jiZKUuv/JiQ/kISuxe2+Slf5BTlYVygcfZWThcS7kZji+uYNu6hLzr6excgHXSy1iYS93qRN8JsZT6lRPOpI1TYO4otKfdzgliiSmp5jcBsNjEMrfw5ViHxPZEPMv5Xjl2A4ee7E3NZIU9oQSaTUTT8WoN6pUmx3iEYF20+HzC5Acg9IaBCZEe8cIpApoBWKixwN7FZJxvV+URNHOjg7R0i3WbpTRcMiN1tn48irXTkDlIrB6kbmJP1B6LXBMfMelZYFhB1Zo62ZlRSuapt/1YtVyDTFa4O7ZUaQfv+Xc6Stk+xye2LPBkadCoK2CrYHvstUM7LWic11yHbfhicz0ZOSxtmESBAGu4KLXdGbjBY69ajO3XyDc2QR9HVcrIylhPvm6debET/r7EuDXC1p5MJ95puMZotG20C8bzCkui4dlFFmHxk2C1gauXkKO9rBeDLsLb6+83LL8ZQnAdbwVvWT4g/n+A/WWxXTI4uiCh2iWCbQtvHYFr2MR7h2g0lI4dOTy4q9r1sfArSUCdDT7dG1V76SH4vc11FA05VhMZEQEKYwYSYDUx6mldvPwa2cXzy0b7/yPTISAceARZUSZCfeFJ2fGldRDw7FAa3ar35+v/HbmansJ+AH4HejeCfgbIgIyEAeU2+4aQJtbCnq3EwD8NQCjhmvoeRBJAQAAAABJRU5ErkJggg==" }, { label: "Opera", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsSAAALEgHS3X78AAADNklEQVQ4jV2RS2hcVRzGf+fcO5OZTBJokiYZW0gEMQljUWuxlRH7IBmkVrEBd6JCqLoJ1kWqXYgL0Y2gRRfaheDCnTZxoZE2EAQfFEkrYRRTNU0ymslkHkm1mcmde865fxfRjd/+9z34lIgwPz9PeWNDtcTjurq97RKJBMP796f7e/v2ARQ2SsXFYnG9vrMj3a2tnnEu6ujokGw2ixIRcrkcs7OzHkq5k5l7Hp08fmLyYHf3g6ZYbBNjie3tbuSr1fl3vv/u3enFXz5HRGcymSifz6MBtFIacB+cHnv7y6ef+epYe/uJ0rX57dLQ3S9v3Hdg4s8fr29mlXpkajQ3/cnI6EUgUrsCEfEeOnqUF4eGz8q5V8WceaG5cuy4LF26lBMRRITlK1eO/Hr/Qbtz8rFQnhyT1wcG3hgYHEREPA244T17+s73D7zmbt5E1tbi9Zi/mM7l5hCJY21y38jI1aC35wcpFGKNwop7yY+dO9zWNliPIqebwONdXaf6tjY7m7Vq0/xRgM7O3xNtbRYRRKkophRef//PQWEVu7VlUrVqfCwWeyoQQXvAITjiSiWoVDDFNXQqVVMAIgoRALyurvLtep2dMFRVYxjS+nBSa3wf6Kw30s1aFYUQ3P4b0bq5y+/CACrREmw5R9w5AmNoEelLAj5AwxrXsBZxjsBFCCj+L0HVAN9aAmtJGusE8B3wm7HLSWtxxkjgHB1BkNyNVfw3wW5vJ6uAMobQOUJrCocArYBvwvDrsnNUjNEVoFEu7/3XQFC7Zerr633rQDEMZQO4bu1cBPga+NbZGQeLd4bh0CbAjRuDUq8naW21EkVaAcWFhQNloNWYxC0oXRP5rAXQgPeXSPMjmLwVhlQ9z/60ujqwNjV1SilltO8HtZmZkRv5/ANKKdseCbNwvgJVHzwfcCmtvSX44lOln39C8WGohcsTExcfXloa9uJxc/XChbNKKXp937+MemUhch/f63lawCEijI6OAnh4Hj1w+llYfBPMeyDvg7wFdhxW7oDn0BrAy2QyRFG0e+P4+DjZbNalEgm/LjItMNej1F09fqwTUBVrt4xEy2egmlLKD8LQptNplFL8A026qgDDLrhmAAAAAElFTkSuQmCC" }, { label: "Maxthon", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfWBw8BAS1q932nAAAAB3RJTUUH1gcPAQIYwmgJNwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAwBQTFRFHUSfHk+qG1OvH1OtHWC7I0SeIUehJ0+nI0+oKUynI1KqIVGsIlauJlKpJ1WsK1CqKlKoKlSqKVetKletLVSrLVWrL1yvIVixI121I163JFmyJluyJF61Ll2xLF60M1esNlarNVqwOFqyO1q0ImG6IWO9JWG5JmC4LGC2KWW5L2W5LWm9N2++PmO2P2O2O2m5Hm7JI23GJmjAJW/HKmzDL23AI3TNLnDFKHTKK3XKLnnOI3jRI3nTJnrSKX7VLH/SMHXJOn3MQmK6Q2a5R2u6SWq9T3u/U3a3T2/AV3fHL4HVMYbXOYjXeJ2sfJypbaW8eai8QYbRVYrMXo3PXpTSXZrVa4vGbI7IaJfPYpXSZZzWbprTb5vVcpzVd5/UaKvHba/Kbqrbd63EeKzCcavbc6nYea3becPjeMTkg6OwgqWzhJ3OgqDQhKTUgqrahK/di6fVgbLGgbLHjLfKgLHfhLDeirTekbPBmLvJkbffpLjBq77Fg8nmiczom8jnmcnpvsjNr8fmqsnnv+T0yNXa1trb29zcxuPvyeDjyuPmzODizODjyODpyeTuzebwz+fwyu7yzer3ze7yz+/yx/b9xvj+yPj+yfj+y/j+2OHj2ebr3ubq0Ofx0ujx0unx0+ny1+vz2ezz2O302uz03u713+/11Pr+3PDy2vv+2/v+/8D/4Obn4vDz4PD24fD25fD25PL34/L65/P44/v+6fT46vT57vf68Pj68P3/9/n69fr89fv99/z9+Pv9+v7/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNJ5gQAAAKt0Uk5T//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8Atyo9bAAAAQNJREFUeNpjWAUCHROWrVw+E8xkAOLuaVPrS0qbduxpgwhMmpZob2NtZmhasHs2SKBrSqitl4+3nYWRevjGBqDA9FQrx6CIkEAHbQ3ZnJ5VDJ0zLA127d21bdPahXMZRSdWM0yuMzbcu3/v9i3rFs/jYK+sYFiRb26ya6+7m470wrkC8nHFDJvzVFm2bdfcuoFpwRwG/ugihjWNapKbtqhsWMozv49VKS2ZYfU+fbm167SWLBbr71XwqM1iWLUzm5tZXEJGiouNUzkyAeiO1vVhvHxCwoIiik7B6b4gp89alOuiq+fs6hmV4Q/xXEt7c1lsTEpNvB/Ut6tWVZUXJgVkgpkAR0RyCIGXtksAAAAASUVORK5CYII=" }, { label: "SeaMonkey", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAEG0lEQVR4AQEQBO/7Af///wAAAAAAAAAAAAAAAAABAXYNFBQcVxERCUQCAgEf////Avz8/urz8/nG6+vypP//fOMAAAAAAAAAAAAAAAAB////AAAAAAAAAAAAERGRXB0dDJAPDwgT/f3/AP39/gD9/f8A/f3+APz8/wD9/f775ub1jvHxCX3//2b7AAAAAAH///8AAAAAABMTkHwjIxKDAwMBAP39/wD8/P4A/f3+AP39/wAgIRAAV28/ABcgEwC0pM0AoY/Dt/Ly2E///5n7AgAAAAANDZBSHh4Pgv7+/wD4+PwA+Pj8APn5/AD5+f0A/v7/AF54RAAXIBQA1OoAAOXZ6QAGBgNJBwckjAAAAAACAQGACBUVCZL//wAB+fn8APn5/QD4+PwA+Pj9APj4/AA4PiAA/g4OANLp/gD//fsAVFssAPv7/gABAQJsAQGILwILCw5QCQkDG/j4/AD4+P0A+Pj8APn5/QD5+fwA+Pj9AB80IgDn9AEA6PQAAP///wAWJxkAMDAWAP///wIFBQJpAgoKBkICAgMADg4LAA0NCAAKCgcA/Pz/APj4/QACAgAAECYbANzuAADq9QAA/f8BAAEAAAAXHREABgYDABAQDEIESUk4IT0+MQAAAAEA9vb1AO/u7gD5+foA8fH7AB4nCQDW8QYA+v0AAAoE/wAKBQAA+P0AADw5KgA0LzsA5+bsIATm5wgA1NQBAAEB/wDz8wUABAQVACYmBwAcHQIA+ikAAP/yAQAIBP8AEwf9AA8H/wAOBwIAwb4SAAEBBgD5+QMBBMPC6uXOzRMA+/v/APn5/wD9/QAAAQEAAG19EAD5HgoAFQv/APX4+wARCP8AHA4BANHF+gDOzvUABAT1APn57uQC+fnnwPLy/QD19f8A+/sAAP7+AAA2OgYACDgJABgL/wAHAPsAKxX/ACgUAADm3P0Ano/0AAgIAAAICAEA/v71wAQAAOWt/PzqjAEBFxMCAgAAJSYDADlvEQASCf0AHw79AAoGAQAA9wEAwaj4ALeu9wAAAAAACAgBAAAA+gDs7NubAf///wABAalkBQU2my0uCgA/dxMAJRL+AAz2/QDU0fwA49j7ANHP+wABAQAABQUAAAQEAQAFBQAA5+fWpd/fQFwB////AAAAAABodNrDHEMjPNy08wC9svcABAQBAAUFAAAFBQEABAQAAAUFAQAFBQAABAQAAOrq3sba2sRG//909QHh8P9GxeH+ffr9APy2isvAwsANdgwMEgoEBAAABQUBAAUFAAAEBAEABQUBAP7+9v/p6dyf3t7Dbf//gPYAAAAAAdbq/3AkFQDHBQAAyQAAAAABAYoaExMsZwwMFEcGBgUgAwMAAQIC/uv5+fLD4uLYmvr6ac8AAAAAAAAAAAAAAAB08Ygz9inangAAAABJRU5ErkJggg==" }, ]; // получить массив с ненужными пунктами меню и восстановливать меню при обнавлении кнопки var hideItems = pref.getValue("CB.OpenWith.removeMenuitem", 0).split(","); addDestructor(function(reason) { if (reason == 'update') pref.setValue("CB.OpenWith.removeMenuitem", "") }); var menuPopup = self.appendChild( document.createElement("menupopup") ); array.forEach(function( m, i ) { if ( "separator" in m ) { menuPopup.appendChild( document.createElement("menuseparator") ); return }; var mItem = document.createElement("menuitem"); mItem.setAttribute("label", m.label); mItem.setAttribute("class", "menuitem-iconic"); mItem.setAttribute("image", m.image ); mItem.setAttribute("value", i++ ); mItem.hidden = hideItems.indexOf(m.label) !== -1; // прятать ненужные пункты меню menuPopup.appendChild( mItem ); }); menuPopup.addEventListener("click", setMenuClick, false); // Настройка функций кликов мыши для пунктов меню ................. function setMenuClick(e) { var mItem = e.target; var value = mItem.getAttribute("value"); var label = mItem.getAttribute("label"); var image = mItem.getAttribute("image"); // ЛКМ запускает другой браузер .... if ( e.button == 0) openWith( value ); // СКМ удаляет пункты меню и записывает выбор в 'about:config' .... if ( e.button == 1 ) { e.preventDefault(); mItem.hidden = true; pref.setValue("CB.OpenWith.removeMenuitem", pref.getValue("CB.OpenWith.removeMenuitem", 0) + label +',' ); } // ПКМ устанавливает новый путь к нужному браузеру .... if ( e.button == 2 ) { e.preventDefault(); menuPopup.hidePopup(); setPathToBrowser( value, image, label ); } }; // Получить выделенную ссылку, иначе отдаст 'false' ................. function getSelectLink() { var links = window.content.document.links; if ( !(document.commandDispatcher.focusedWindow.getSelection() == '') ) { for ( i=0; i<links.length; ++i ) { if ( window.content.getSelection().containsNode(links[i], true) ) { var link = links[i]; } } return ( link == undefined ) ? false : link; } else { return false }; }; // Открыть страницу или ссылку в другом браузере, аргумент 'value' определяет нужный элемент массива с путями ................. function openWith( value ) { // получить адрес ссылки или страницы, в 'Punycode' если это .рф домен .... var loc = content.document.location; var link = getSelectLink(); var loc = link ? link : loc; var url = ( loc.host.slice(-3) == '.рф') ? Services.io.newURI( loc.href, null, null).asciiSpec : loc; var path = pref.getValue("CB.OpenWith.pathToBrowser", 0); var pathToBrowser = path.split(",")[value]; // получить путь из 'about:config' var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile); file.initWithPath( pathToBrowser ); if ( !file.exists() ) { alertsService.showAlertNotification("chrome://global/skin/icons/error-16.png", pathToBrowser, 'Файл не существует', false, "", null, ""); return; } var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); try { var args = [url]; process.init( file ); process.run( false, args, args.length ); } catch(e) { alertsService.showAlertNotification("chrome://global/skin/icons/error-16.png", pathToBrowser, 'Не удалось выполнить', false, "", null, "") }; }; // Установить новый путь к браузеру, и записать выбор в 'about:config' ................. function setPathToBrowser( value, image, label ) { var fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker); fp.init( window, "Укажите путь к нужному браузеру!", fp.modeOpen ); fp.appendFilters( fp.filterApps ); if ( fp.show() == fp.returnCancel ) return; else { // получить из 'about:config' массив с путями к браузерам var arr = pref.getValue("CB.OpenWith.pathToBrowser", 0).split(","); // заменить нужный элемент массива на новый путь и записать var newPath = fp.file.path; arr[value] = newPath; pref.setValue("CB.OpenWith.pathToBrowser", arr.toString() ); alertsService.showAlertNotification( image, "Путь к браузеру: " + label, newPath, false, "", null, ""); } }; // Автоматически закрывать меню при ухода курсора с меню ................. if ( autoClose ) { menuPopup.setAttribute("onmouseleave", "this.mo = false; setTimeout(function(mp) { if ( !mp.mo ) mp.hidePopup() }, 800, this)"); menuPopup.setAttribute("onmouseover", "this.mo = true"); }; // Подсказка кнопки ................. this.tooltipText = "Открыть страницу или выделенную ссылку в другом браузере" +"\n"+"\n"+ "Функции кликов мыши для пунктов меню" +"\n"+ "Л: Открыть страницу или ссылку" +"\n"+ "С: Удалить пункт меню" +"\n"+ "П: Изменить путь к нужному браузеру";
Отсутствует
Здравствуйте, есть кнопка "Открыть страницу или выделенную ссылку в другом браузере" как сделать чтоб при наведении на кнопку открывалось меню той кнопки?
self.onmouseleave =()=> self.mo = true; self.onmouseover =()=> { self.mo = false; setTimeout(()=> !self.mo && menuPopup.showPopup(self, -1, -1, "popup", "bottomleft", "topleft"), 800) };
В инициализацию кнопки.
Отсутствует
bunda1
Спасибо, все работает.
Может есть такая кнопка https://forum.mozilla-russia.org/viewto … 01#p708701
Отредактировано broker (26-02-2016 22:42:30)
Отсутствует
bunda1
А есть у меня ещё кнопка с таким кодом
Насколько помню вы и делились. Сейчас я жму на кнопку, открывается боковая панель, но чтоб закрыть надо нажимать крестик. Может можно сделать чтоб закрывалось тоже по кнопке и тогда предыдущая совсем не нужна.
Отсутствует
bunda1
Может можно сделать чтоб закрывалось тоже по кнопке и тогда предыдущая совсем не нужна.
this._handleClick =()=> document.getElementById('sidebar-box').getAttribute('sidebarcommand') ? toggleSidebar() : openWebPanel("Downloads", "about:downloads");
Отсутствует
А можно ли сделать так, что при наборе текста выскакивала полноценная панель поиска и не пряталась сама по себе? Можно ли сделать добавление закладки через звёздочку в последнюю выбранную папку, а не неподшитые закладки? А во всплывпющей из звёхдочки панели выбор папки был сразу развёрнут?
Ну ведь можно же как-то?
Вы думаете у котов лёгкая жизнь? А вы попробуйте целый день лизать меховую шапку!
Отсутствует
А можно ли сделать так, что при наборе текста выскакивала полноценная панель поиска и не пряталась сама по себе?
В инициализацию:
function onFind() { gFindBar.onFindCommand() }; messageManager.addMessageListener("Findbar:Keypress", onFind); addDestructor(()=> messageManager.removeMessageListener("Findbar:Keypress", onFind));
Добавлено 02-03-2016 20:03:54
А во всплывпющей из звёхдочки панели выбор папки был сразу развёрнут?
В инициализацию:
addEventListener("popupshown", ()=> { document.getElementById('editBMPanel_foldersExpander').click(); }, true, document.getElementById("editBookmarkPanel"));
Отредактировано bunda1 (02-03-2016 20:03:54)
Отсутствует
bunda1
Спасибо А сделать добавление закладки через звёздочку в последнюю выбранную папку, нельзя?
Отредактировано KOT040188 (02-03-2016 20:26:23)
Вы думаете у котов лёгкая жизнь? А вы попробуйте целый день лизать меховую шапку!
Отсутствует
bunda1
А сделать добавление закладки через звёздочку в последнюю выбранную папку, нельзя?
Наверно можно и не сложно, но я не знаю что за функция Firefox добаляет закладки через звёздочку
Отсутствует