Dumby
Согласен. новая dll тоже гуд. в ini надо было дописать кое-что. Но...после рестарта падают настройки ublock ? как минимум две и фильтры не всегда срабатывают . Боюсь не только ublock. При моей фишке этого не происходит(через bat/vbs)...
Нужна помощь на этот код ...На "отмена" - надо отменить код в ini- this._handleClick = () => ps.setIntPref(s, ps.getIntPref(s, 3) ? 0 : 3); т.е -на 0 выставить.
/*Initialization Code*/ (ps => { var s = "browser.startup.page"; this._handleClick = () => ps.setIntPref(s, ps.getIntPref(s, 3) ? 0 : 3); })(Services.prefs); this.oncontextmenu =e=> { e.button && !e.ctrlKey && e.preventDefault() }; this.tooltipText= "ЛКМ: Рестарт"; ;
Отредактировано solombala (04-07-2020 21:28:39)
Отсутствует
Dumby.
Можно ли добавить в эту кнопку возможность восстановления выбранной сессии (из ранее сохраненных) при открытии браузера.
/*Initialization Code*/ // Simple Session Manager (https://forum.mozilla-russia.org/viewtopic.php?pid=744023#p744023) .......... // Подсказки для кнопки ..... this.tooltipText = "Simple Session Manager\n\ ------------------------------\n\ Л: Меню сессий\n\ дЛ: Сохранить сессию\n\ П: CB меню"; // Настройка функций кликов мыши ..... this.onmousedown =e=> { this.onmouseup =e=> { // левый клик if ( e.button ) return; clearTimeout(self.timer); self._handleClick =()=> menupopup.openPopup(this, "after_start"); } if ( e.button == 0 ) { // длинный левый клик self.timer = setTimeout(()=> { self.onmouseup = ''; saveCurrentSession(); }, 500); } if ( e.button == 2 ) { // правый клик gShowPopup(this); } } self.onclick =e=> e.preventDefault(); var menupopup = self.appendChild(document.createXULElement("menupopup")); menupopup.id = "ssm_menupopup"; var scs = document.createXULElement("menuitem"); scs.setAttribute("label", "Сохранить сессию"); scs.setAttribute("class", "menuitem-iconic"); scs.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKVSURBVHjajFNNTBNREJ6+7na73bLbQn8I0BKNCYWKGr0oYoiJPxeNh6oHozcOxgSVi4le1JNHQRPigRsewURNPKiJMQicSISUACelRVJ2tz/bdktpy9adBzT8xTjJ5L35ezNv5hsLHEAv7noEntguChx7EuV8oTydKRhfno8kCnt9LTuFZ7f87mAz/8rnl86GOoOBBq+LQX1S1ioLs0txWdEmsulS38Phlcy+BwZ6W0L+JsfolcjpsFDnBKNcgQ193bRUwSrwQFgr6Dkd3o9NzilqMdI/FF+sPYCZ245I4zdunw9DtQr6LxlK6bVdpdrcPAiHfGBYLDD69ltUXsmfw0oIGoPNjkHMjMHa3J9asDyRpoyEOrQR0+dq5MxR0c29Rj3Bhvn8YjeWjZmN9cpWcApSkzpkptYg8T1FdWjTfysg1Ang9YtdT+80OogTbJc7OlsD+OftzOqsBrMflqHe6QKXIEL00zLV0UpSBbM/G9DeEQy6OXKJsfPsCbdXYjb0Yu2/nmMS9LSGYGlYpXLPkxCwkq1mR98Gn8Q4XexxYhhgYKf3TPTfRDaPqklkvViaSSpaxSpw/x1v5e0UG8W10k+iW8qfF2ZiccIydFQ7ScsXKO8ep4NiYj4ai6k5+Eoev1F1Wcn8QJDgnAnHbGYRWTh800cZ77Ryzmr6eCGXzYGiZCcQ2vQ32XT5PiIMTJBI4Waw1ZtZzLu7XaSMd1s9b9paKJA+vpuKqols3y4ov7wXaPN67GPXIl1hnDOOansyVicHhGHMzHkzeDKqqPnr/UOJxX3LNNDb5BJd3KC3Uexu7wgEGxq3limRqcxH47FVWRtPreYePBpJagdu4zYhwjx1cMFus59CuVgqTmPDDlrnvwIMAGS8IFCLagHpAAAAAElFTkSuQmCC"); scs.addEventListener("command", saveCurrentSession, false); menupopup.appendChild(scs); var menusep = document.createXULElement("menuseparator"); // Сепаратор ..... menupopup.appendChild(menusep); var savedSessions = loadFile(); // Сохраненный список ..... for (name in savedSessions) { makeitems(name); } // overwrite = 1 - Открыть сессию в текущем окне (все открытые вкладки будут закрыты) ..... // overwrite = 0 - Добавить вкладки в текущее окно (сессия будет добавлена к уже открытым вкладкам) ..... var overwrite = 1, Cc = Components.classes, Ci = Components.interfaces, Cu = Components.utils, SS = "nsISessionStore" in Components.interfaces ? ( Components.classes["@mozilla.org/browser/sessionstore;1"] || Components.classes["@mozilla.org/suite/sessionstore;1"] ) .getService(Components.interfaces.nsISessionStore) : SessionStore; if (!window.Services) { Cu.import("resource://gre/modules/Services.jsm"); } // Функции работы с файлами ..... function saveFile(data) { var file = Services.dirsvc.get('UChrm', Ci.nsIFile); file.append("simple_session_manager.json"); var suConverter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Ci.nsIScriptableUnicodeConverter); suConverter.charset = 'UTF-8'; data = suConverter.ConvertFromUnicode(data); var foStream = Cc['@mozilla.org/network/file-output-stream;1'].createInstance(Ci.nsIFileOutputStream); foStream.init(file, 0x02 | 0x08 | 0x20, 0664, 0); foStream.write(data, data.length); foStream.close(); } function loadFile() { var file = Services.dirsvc.get('UChrm', Ci.nsIFile); file.append("simple_session_manager.json"); if (file.exists() === false) return false; var fstream = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(Ci.nsIFileInputStream); var sstream = Cc["@mozilla.org/scriptableinputstream;1"].createInstance(Ci.nsIScriptableInputStream); fstream.init(file, -1, 0, 0); sstream.init(fstream); var data = sstream.read(sstream.available()); try { data = decodeURIComponent(escape(data)); } catch(e) {} sstream.close(); fstream.close(); if (data === "undefined") return false; data = JSON.parse(data); return data; } // Получить текущее время ..... function getTime() { var d = new Date(); function addzero(t) { (t < 10) ? t = '0' + t : t; return t; } var t = addzero(d.getFullYear()) + '.' + addzero(d.getMonth()+1) + '.' + addzero(d.getDate()) + '-' + addzero(d.getHours()) + ':' + addzero(d.getMinutes()) + ':' + addzero(d.getSeconds()); return t; } // Получить название вкладки ..... function getTabLabel() { var label = gBrowser.selectedTab.label; return label.substring(0, 70); } // Функции "prompt", "alert" и "confirm" от Dumby ..... // https://forum.mozilla-russia.org/viewtopic.php?pid=782149#p782149 ..... // https://forum.mozilla-russia.org/viewtopic.php?pid=782181#p782181 ..... var prompt = (msg, value) => { var res = {value}; var ok = Services.prompt.wrappedJSObject .pickPrompter({domWin: window, modalType: Ci.nsIPrompt.MODAL_TYPE_WINDOW}) .nsIPrompt_prompt(null, msg, res, null, {}); return ok ? res.value : null; } var alert = msg => Services.prompt.wrappedJSObject .pickPrompter({domWin: window, modalType: Ci.nsIPrompt.MODAL_TYPE_WINDOW}) .alert(null, msg); var confirm = msg => Services.prompt.wrappedJSObject .pickPrompter({domWin: window, modalType: Ci.nsIPrompt.MODAL_TYPE_WINDOW}) .confirm(null, msg); // Сохранение сессий ..... function saveSession(ssdata) { var name = prompt('Сохранить:', getTabLabel() + ', ' + gBrowser.tabs.length + ' (B) ' + '[' + getTime() + ']' ); if (name != null) { if (loadFile() === false) { var data = {}; } else { var data = loadFile(); } if (data[name]) { alert('Сессия с тем же именем уже существует!'); return; } data[name] = JSON.parse(ssdata); saveFile(JSON.stringify(data)); makeitems(name); } } // Сохранить текущую сессию ..... function saveCurrentSession() { var ssdata = SS.getBrowserState(); saveSession(ssdata); } // Удалить сессию ..... function remove() { var node = this.parentNode.parentNode; var name = node.getAttribute("label"); var cf = confirm('Вы уверены, что хотите удалить ' + name + ' ?'); if (cf === true) { node.style.display = "none"; var data = loadFile(); delete data[name]; saveFile(JSON.stringify(data)); } } // Переименовать сессию ..... function rename() { var node = this.parentNode.parentNode; var name = node.getAttribute("label"); var newname = prompt('Переименовать ' + '"' + name + '"' + ' в:', 'введите новое имя'); if (!newname) return; this.parentNode.parentNode.setAttribute("label", newname); var data = loadFile(); var value = data[name]; data[newname] = value; delete data[name]; saveFile(JSON.stringify(data)); } // Восстановить сессию ..... function restoreSession(stateString) { if (typeof stateString === "string") { var state = stateString; } else { var name = this.parentNode.parentNode.getAttribute("label"); var data = loadFile(); var state = JSON.stringify(data[name]); } switch (overwrite) { case 0: SS.setWindowState(window, state, false); break; case 1: SS.setBrowserState(state); break; } } // Создаем меню ..... function makeitems(name) { var ss = document.createXULElement("menu"); ss.setAttribute("label", name); ss.setAttribute("class", "savedSessions"); ss.className = "menu-iconic"; ss.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAEnQAABJ0BfDRroQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAGxSURBVDiNnZE/T1NRGMZ/7zn3lmKLkIKpaUxZFINEJZ0YHXRwcnBxMQ6aOJi4+FH8Dm5OOjA4+AEYGCTRook1JlVIVUrbW/rnPg63UtReIr7bOXmf5/ye59jDlanHS3O+wn/Mu+/DF8HFeVe5f+vaPTdfPpF4UNvk6frmhwAvXOEsvrR0IoN47xM4CHCADmDQBkAHbdTrTBRZdgYLs6NTD/MiMC+gC8MO6ke8ffWsXv3S3JpksHouv7Z4/UEeM8z6IwKfEGjYRt0G1d3m1p3n0Y1JBi/vTtfKw1Yec2CHBDFmXYjboAgL4tTc5pXsmcNcDxIDUFQHuqgfYT69OAuE9qqAoX4jIcAL7b9H+0deOYYg3tkYXxx2EAo7dQYEBF/TEULD5oow7KHut18RhGVD3GwxMZ36YWn6IJd37vQCSMSNBpYQCMs43PQMAJXlwtr6k7CGfo9iznN1ebGY7Ak1NSJwYERYJgM+Q+nClVzp/OXc3wWMwdT+jAVKCMwLC2PUeoMrrEI4m94BQq0a6mxjoca/YKFgUCfeqR8jPhoHcIAHe3ST2+UFLv2T8o/5uMvrnx9Wn65p5nMEAAAAAElFTkSuQmCC"); var ss_popup = document.createXULElement("menupopup"); var rs = document.createXULElement("menuitem"); rs.setAttribute("label", "Восстановить"); rs.setAttribute("class", "menuitem-iconic"); rs.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAACzElEQVQ4jX2QPWwbZRjHf+/5vfPdObZjO3Ga2pVpGtxCP4QIDKgqDCDUNQwgJCS2qFI3hBCRCvXSCcTAAu0GY0Fi4kuq+IjUCpWAgCTq4IpS3Di2G8c+x/bZ57t7mSJFMfBf/3p+z+95BPvy3pufxqKmcVY3ZFFKmQtFGIReuNnrDze6lv5TqfSyx4EIgA/e+fzkZML6MDmVnD80mz1kxW3DMAxQCs/z6Hb6g3q1Xt1ttdfa7dbFN668vrkHkADJhPntufNnc0LTDi7AjFkkUknzcGF2LvCDuZVvfiwCj+/1GoAmhL3x6x2cZhsVqjFIGIZs15ts/LJOJCLt/Z0EiE3Y9eLpR1ONaoMH9zbHAGiC9FSKkwunWF1Z3RoDABhRg/zRPPmj+XHA/0QDaLectFLj6gcT+AHdTm9mzMC27e766lrWtCwy2Qz2hIUeNVDAaDCku9ujWW/ij3wsO9oaMzCiunf66TMU5gt4wyGbf1Upr5W5u15mq1JDhYqZQo6HIuqtueLw4vLXzwC89NZXeQFw/ePv7zx5buHEf6nf3qgMVipOGE0ko6EKhoQi3NnZ+c51BwsaQLOxM9N1uv86vNtz+aHSDn0pH9S2tl6r/Pn3s/VG/WYunzs/NZ2OSID0dKpRrzZS98v3kYbEsi1004BQcbtc9Q07bdYb229/dvmFL5aWVvVts9mq1Wo/e54vJIAQqGOPzQHgj3zcvos39BAIBshRqJQYjYZ/AFy79tQIeHVx+ctiIDRTA+g43Xud9q4PIHVJPBknk82QzqY5VZg2UUrEYhOX9s5aXL5RnMykb8Rj9kcC4OrSVZ1Hpt+PJ5PPz+SzR5KpyYRpGgRKMei7fHLr7lBmZ1XHcX4LgsCxLPt4JBLRm82Hr4j9DyuVSprdO/ZELGafkXpkXtPA94OK03Vv/R4/csEw5XOGbuieN6y6bv/S9XdfvPkPTgcoDlpQJpwAAAAASUVORK5CYII="); rs.addEventListener("command", restoreSession, false); var rn = document.createXULElement("menuitem"); rn.setAttribute("label", "Переименовать"); rn.setAttribute("class", "menuitem-iconic"); rn.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPFJREFUeNrEU0sOgkAMbc1IIHoQT+KeY7hkBW5ccwLdsOICxI2X8peIGhggI21gggpCwsImM01f+tpOO0WlFIwR0efgeR5nsG0boihizPd91A5UwZDjuq5qwycwUkQYhttSr4Y4l76fDdtBEAQqz3OVZdnPQ09o2sQhrpBSQgnAen/qzLxZzljHcawxy7KAuCJNUyiKAm53SS0FBGQNlUW3lFO2iVCLYRhAXJEkCQPn65NGAswpL/4fWAebt1ZGXB3geHlw9maXsKqjS94CHNxF7xRM0/wKgI7jDBojvbnZAz3Gv/9E7NvGvmXCsev8EmAAWocA9ofpaRIAAAAASUVORK5CYII="); rn.addEventListener("command", rename, false); var rm = document.createXULElement("menuitem"); rm.setAttribute("label", "Удалить"); rm.setAttribute("class", "menuitem-iconic"); rm.setAttribute("image", "data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAABt0lEQVQ4ja2RT2sTURTFz8tk0nntFAQrVLBQxIUg/tkkMoLyIEVECHZhNrrxI+hOP5Mb6eBCcEipYIjZ2LpvhFasUtBSkwzOve+6mE6YSScuxLt67753fudyLvA/a7T+qCHmiTfrfWCMd3j9diPfq2SHX+uPnzJx71gP33w3bX9avBcE2j+SkK30Di7ffJ71VebMxD1hC2GGEEfH41prpftynIm92A0t2aYQQYgBThrndz/2KwCgf9Z2LNtImFOAtc356ijcCwJdJrZEUWzPfJpMAAAStPWR/h2Ktc10CoIQRUKEabFNvNbKfndcAKSjtrVfHW5YorWTzxDKYAxLtOWM+P7yt51hIYPpsDTNTyB/EwNAtWxdMuV8GCfbgxjxIviUYSV/SQOrbVjitbx4N8alBeXcdZR+3Tl3xS8FlIkt0dbnWH3xlbPgKgUo3HEq+tX7C4EuAAbGeOmqCuLIJt69s3PeQ1epKGfapCQJO6vGmwAWf/C1Wau6td8dV123BaAAUfHw6gSwtP3ugxA/y6X9INszAOQgbwFAIC/MQb9/Kv2vF2/UByejlVVn1Xiby/X6rPd/qj/1ak71UYKuwQAAAABJRU5ErkJggg=="); rm.addEventListener("command", remove, false); ss_popup.appendChild(rs); ss_popup.appendChild(rn); ss_popup.appendChild(rm); ss.appendChild(ss_popup); menupopup.appendChild(ss); }
Отредактировано unter_officer (09-07-2020 01:22:09)
«The Truth Is Out There»
Отсутствует
Нужна помощь на этот код ...На "отмена" - надо отменить код в ini- this._handleClick = () => ps.setIntPref(s, ps.getIntPref(s, 3) ? 0 : 3); т.е -на 0 выставить.
Не смог понять зачем держать такой «код в ini», если «На "отмена" - надо отменить».
Но раз «на 0 выставить» — так выстави, просто допиши в Код
else Services.prefs.setIntPref("browser.startup.page", 0);
Можно ли добавить в эту кнопку возможность восстановления выбранной сессии (из ранее сохраненных) при открытии браузера.
Вот прям при открытии, ну разве что на выходе подменить.
Выбор сессии — двойной ЛКМ по соответствующему пункту.
Код добавить в конец.
((g, id, pref, {obs, prefs, ww, dirsvc}, style) => { var popup = scs.parentNode; addEventListener("dblclick", g[id] || (g[id] = { get name() { return prefs.getStringPref(pref, null); }, init() { obs.addObserver(this, "quit-application", false); prefs.addObserver(pref, this.upd = () => { var {name} = this; for(var win of ww.getWindowEnumerator("navigator:browser")) win.toolbar.visible && this.updPopup(win, name); this.oldName = null; }); var st = new Image().style; st.cssText = style; this.style = st.cssText; this.handleMuts = this.handleMuts.bind(this); return this; }, destroy(reason) { delete g[id]; obs.removeObserver(this, "quit-application"); prefs.removeObserver(pref, this.upd); reason == "delete" && prefs.clearUserPref(pref); }, observe(s, t, data) { this.destroy(); if (data.includes("restart")) return; var {name} = this; if (name == null) return; var file = dirsvc.get("UChrm", Ci.nsIFile); file.append("simple_session_manager.json"); var state; try {state = JSON.parse(Cu.readUTF8File(file))[name];} catch {} if (!state) return prefs.clearUserPref(pref); g.SessionStoreInternal.getCurrentState = () => state; prefs.setBoolPref("browser.sessionstore.resume_session_once", true); }, handleEvent(e) { if (!e.button && e.target.nodeName == "menu") e.target.label == this.name ? prefs.clearUserPref(pref) : prefs.setStringPref(pref, e.target.label); }, oldName: null, updPopup(win, name = this.name) { var {style} = this, popup = win.document.getElementById("ssm_menupopup"); if (popup) for(var menu of popup.getElementsByTagName("menu")) if ( this.oldName != null && menu.label == this.oldName && !void(menu.label = name) || menu.label == name ) menu.style.cssText += style; else { var css = menu.style.cssText; if (css == style) menu.removeAttribute("style"); else if (css.includes(style)) menu.style.cssText = css.replace(style, ""); } }, opts: { attributes: true, attributeOldValue: true, attributeFilter: ["style", "label"], subtree: true }, handleMuts(muts) { if(!muts[0].target.matches(":-moz-window-inactive")) for(var mut of muts) if (mut.attributeName == "label" && mut.oldValue == this.name) this.oldName = this.name, prefs.setStringPref(pref, mut.target.label); else if (mut.attributeName == "style" && mut.oldValue == this.style) { var css = mut.target.style.cssText; css && css != this.style && prefs.clearUserPref(pref); } } }).init(), false, popup || 1); g[id].updPopup(window); var mo = new MutationObserver(g[id].handleMuts); mo.observe(popup, g[id].opts); addDestructor(reason => mo.disconnect(reason[5] == "e" && g[id]?.destroy(reason))); })( Cu.import("resource:///modules/sessionstore/SessionStore.jsm", {}), "CBSSMQuitApplicationObserver", "CB.SSM.sessionToRestore", Services, "font-weight: bold !important; color: red !important;" );
Отсутствует
Dumby
Лажа какая-то... else Services.prefs.setIntPref("browser.startup.page", 0); Куда это ? Предупредиловка пропадает и толку - ноль...
Это код
if (custombuttons.confirmBox(null, "Перезапустить с восстановлением вкладок ?", "Да", "Отмена") ) { var file = Services.dirsvc.get('ProfD', Ci.nsIFile); file.initWithPath(file.path + "\\memreduct\\fox.vbs"); file.launch(); }
(ps => { var s = "browser.startup.page"; this._handleClick = () => ps.setIntPref(s, ps.getIntPref(s, 3) ? 0 : 3); })(Services.prefs); this.oncontextmenu =e=> { e.button && !e.ctrlKey && e.preventDefault() }; this.tooltipText= "ЛКМ: Рестарт"; ;
Отсутствует
else Services.prefs.setIntPref("browser.startup.page", 0); Куда это ?
Это в код (не в ini), после закрывающей скобки от if
(то есть в конец).
Уж наверно конструкцию if else не первый раз видишь.
Отсутствует
Dumby
Та ну на... Не фига...В самый конец? Теперь да...Класс! Кстати, этот гнусный ютуб в 78 сходу видео запускает в текущей вкладке...или это мой косяк? Медиа на 5 стоит...
Отредактировано solombala (09-07-2020 22:54:50)
Отсутствует
Вот прям при открытии, ну разве что на выходе подменить.
Выбор сессии — двойной ЛКМ по соответствующему пункту.
Код добавить в конец.
Спасибо большое!
А вообще, кнопка совершенно кривая, одноокошечная,
её нереально исправить, только переписать заново.
Если Вам не трудно, и если найдете время, то перепишите пожалуйста.
«The Truth Is Out There»
Отсутствует
Подскажите пожалуйста (в шапке все ссылки не рабочие) этот аддон ещё работает и если да, то где скачать? И на новых версиях(у меня 68.0.2) это работает?, если нет, то на какой версии - это работает?
Отсутствует
sibirnik
Последняя версия CB, лучше paxmod (как по мне)
https://forum.mozilla-russia.org/viewto … 38#p782238
это конфиги (в папку ff, где firefox.exe)
https://www.upload.ee/files/11888164/signed.7z.html
А чтобы всё заработало надо удалить из папки профиля папку startupCache.
Всё это работает точно как часы с 68 до 77
Отредактировано momo2000 (13-07-2020 08:16:19)
Отсутствует
Dumby
У меня с 79 перестал этот код срабатывать (для однопроцессорного режима)
setTimeout(()=> { var promise = AddonManager.getAddonsByTypes(["extension"]); promise.then(addons=> { addons.forEach(addon=> { if ( addon.name == "Right Links WE" ) { addon.softDisabled = true; setTimeout(()=> addon.softDisabled = false, 200); } }); }); }, 200);
Отредактировано Garalf (17-07-2020 11:40:11)
Отсутствует
Garalf
Кардинальное решение для многопроцессного, сводит потребление к однопроцессному.
https://forum.mozilla-russia.org/viewto … 36#p782936
Отредактировано vending_machine (17-07-2020 11:48:05)
Отсутствует
У меня с 79 перестал этот код срабатывать
https://hg.mozilla.org/mozilla-central/rev/116a28847684
Отсутствует
Dumby
Посмотри, пожалуйста, что можно сделать с этим кодом "Активация вкладки наведением курсора" в 78, в 68 работает безукоризненно, как uc.js [спасибо bunda1, https://forum.mozilla-russia.org/viewto … 06#p557706]
(function() { var tab_hover={ event:null, tid:null, onLoad: function() { gBrowser.tabContainer.addEventListener("mouseout", tab_hover.onMouseOut, false); gBrowser.tabContainer.addEventListener("mouseover", tab_hover.onMouseOver, false); }, onUnload: function() { gBrowser.tabContainer.removeEventListener("mouseover", tab_hover.onMouseOver, false); gBrowser.tabContainer.removeEventListener("mouseout", tab_hover.onMouseOut, false); }, onMouseOver: function(event) { tab_hover.event=event.target; tab_hover.tid=setTimeout( function(){ gBrowser.selectedTab=tab_hover.event; } , 200); }, onMouseOut: function() { clearTimeout(tab_hover.tid); } }; if (!this.tab_hoverRun) tab_hover.onLoad(); this.tab_hoverRun = true; })();
(function () { var menubar = document.getElementById('toolbar-menubar'); addEventListener("mouseover", function(e) { if ( menubar.getAttribute("autohide") == 'true' && menubar.getAttribute("inactive") ) { gBrowser.selectedTab = e.target; } }, false, gBrowser.tabContainer ); })();
Отредактировано bezuma (20-07-2020 11:02:31)
Отсутствует
А в 78, куда я его только не пытался воткнуть
, ибо ни бум-бум, не хочет.
Ну, в 68 вкладки конструировались через XBL,
и event.target события "mouseover" был, собственно, сам <tab>
А в 78 вкладки конструируются через кустомэлементщину,
и event.target события "mouseover" будет, в большинстве случаев,
одним из элементов их дочернего добра.
Вобщем, раз говоришь «в 68 работает безукоризненно», тогда вот такая правка.
И нет, когда подправишь, не размещай в custom_script_all_win,
размещай, после такой же упомянутой строки, но только в custom_script_win.js
/* onMouseOver: function(event) { tab_hover.event=event.target; tab_hover.tid=setTimeout( function(){ gBrowser.selectedTab=tab_hover.event; } , 200); }, */ onMouseOver: e => tab_hover.tid = setTimeout(tab_hover.activate, 200, e.target), activate: trg => gBrowser.selectedTab = trg.closest("tab"),
Отсутствует
Вобщем, раз говоришь «в 68 работает безукоризненно», тогда вот такая правка.
И нет, когда подправишь, не размещай в custom_script_all_win,
размещай, после такой же упомянутой строки, но только в custom_script_win.js
Спасибо. А в отдельные файлы здесь скрипты можно помещать?
Отсутствует
Dumby
ссылки кликабельны..а нельзя -всегда кликабельны?
gBrowser.selectedBrowser.messageManager.loadFrameScript(this.fsURL || ( this.fsURL = `data:,(match => {\n${encodeURIComponent(this.Help)}\n})()` ), false);
Отредактировано solombala (23-07-2020 20:47:13)
Отсутствует
здрасти! тут такая хотелка нарисовалась. есть кнопка "Создать кнопку ярлык для сайта в текущем табе", правда она не в текущем, а в новом открывает, но то такое.
/*CODE*/ // Иконка для создания кнопки ярлыка без значка веб-сайта ................. var defaultFavicon = "chrome://custombuttons/skin/stdicons/gbutton.png"; // Получить иконку сайта и запустить создание кнопки ярлыка ................. PlacesUtils.favicons.getFaviconDataForPage( gBrowser.currentURI, (uri, len, arr, mmt) => createButton(len ? `data:${mmt};base64,${btoa(String.fromCharCode(...arr))}` : defaultFavicon ) ); // Дублировать кнопку и установить для новый кнопки иконку, название и код ................. function createButton(favicon) { custombuttons.cloneButton(self, true); var newButtonLink = custombuttons.makeButtonLink("update", self.nextSibling.id); var params = custombuttons.cbService.getButtonParameters(newButtonLink).wrappedJSObject; params.image = favicon; params.name = gBrowser.contentTitle.slice(0, 75); params.code = `gBrowser.selectedTab = gBrowser.addTrustedTab("${gBrowser.currentURI.spec}");`; custombuttons.cbService.installButton(params.wrappedJSObject = params); }
хочу такую же кнопку, н̶о̶ ̶с̶ ̶п̶е̶р̶л̶а̶м̶у̶т̶р̶о̶в̶ы̶м̶и̶ ̶п̶у̶г̶о̶в̶и̶ц̶а̶м̶и̶ , чтобы она создавала ярлык, который открывал бы страницу в "личном" по дефолту контейнере. вотЪ
Отсутствует
а нельзя -всегда кликабельны?
Наверно можно, если обезьяний скрипт
использовать по назначению, то есть в обезьяне.
открывал бы страницу в "личном"
... //params.code = `gBrowser.selectedTab = gBrowser.addTrustedTab("${gBrowser.currentURI.spec}");`; params.code = `gBrowser.selectedTab = gBrowser.addTrustedTab("${gBrowser.currentURI.spec}", {userContextId: 1});`;
Отсутствует
«Merge Day»
custom_buttons-0.0.7.0.0.16-fx-paxmod.xpi
custom_buttons-0.0.7.0.0.16-fx-bootstrap.xpi
Отредактировано Dumby (27-07-2020 17:07:44)
Отсутствует