Dumby
Ну с macromedia давно справился. винрар - это винда косячит...А вот с «--panel-disabled-color не понятно. хотите сказать , что меняется колор "востановить пред...сессию" , когда нет этой сессии?
И еще такие же места "Пусто" и т.д ? Не верю...Извиняюсь, нашел косяк toolbarbutton.css
НУЖЕН ТОЛЬКО ЭТОТ winrar-x64-591b1 ...Т.к версия винды новая . Теперь гуд!
Отредактировано solombala (23-06-2020 17:46:01)
Отсутствует
Есть вопросик.
Например, имеем такой код:
var selectionTxt = document.commandDispatcher.focusedWindow.getSelection(); var url = 'https://translate.google.com/#view=home&op=translate&sl=auto&tl=ru&text='; var txtUrl = (url + encodeURIComponent(selectionTxt)); gBrowser.selectedTab = gBrowser.addTab(txtUrl, { triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal() });
В однопроцессорном режиме работает нормально - открывается новая вкладка translate.google.com, вставляется текст и происходит перевод текста.
В многопроцессорном режиме - открывается новая вкладка translate.google.com, а вот текст не вставляется. Консоль при этом молчит.
Как сделать, чтобы работало в многопроцессорном режиме?
Отредактировано unter_officer (23-06-2020 14:47:34)
«The Truth Is Out There»
Отсутствует
unter_officer попробуй
let browserMM = gBrowser.selectedBrowser.messageManager; browserMM.addMessageListener('getSelect', function listener(message) { // создать текст для записи var selectionTxt = message.data; var url = 'https://translate.google.com/#view=home&op=translate&sl=auto&tl=ru&text='; var txtUrl = (url + encodeURIComponent(selectionTxt)); gBrowser.selectedTab = gBrowser.addTab(txtUrl, { triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal() }); browserMM.removeMessageListener('getSelect', listener, true); }); browserMM.loadFrameScript('data:,sendAsyncMessage("getSelect", content.document.getSelection().toString())', false);
Отсутствует
Andrey_Krropotkin, большое спасибо! Всё работает.
«The Truth Is Out There»
Отсутствует
Есть такой код:
/*Initialization Code*/ // Открывать ссылки длинным кликом .......... (code => { var delay = 500; // время удержания в мс var inBackground = false; // открывать в фоновой вкладке var relatedToCurrent = false; // открывать рядом с related вкладкой var p = "CB" + _id.slice(20) + ":LongPressHandler:"; var msgDestroy = p + "Destroy", msgResponse = p + "Response"; code = code.replace(/%MD%/g, msgDestroy).replace("%MR%", msgResponse) .replace("%DL%", delay).replace("%BG%", inBackground); var url = "data:," + encodeURIComponent(code); var mm = window.getGroupMessageManager("browsers"); mm.loadFrameScript(url, true); function handleLongPress(msg) { var [link, ref, ctrl] = msg.data; var bg = inBackground != null ? inBackground : Services.prefs.getBoolPref("browser.tabs.loadInBackground"); gBrowser.loadOneTab(link, { triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal() }), { relatedToCurrent, inBackground: ctrl != bg, //referrerURI: makeURI(ref) }; } mm.addMessageListener(msgResponse, handleLongPress); addDestructor(() => { mm.removeDelayedFrameScript(url); mm.broadcastAsyncMessage(msgDestroy); mm.removeMessageListener(msgResponse, handleLongPress); }); })(`({ init() { addEventListener("mousedown", this, false); addMessageListener("%MD%", this); }, receiveMessage() { removeEventListener("mousedown", this, false); removeMessageListener("%MD%", this); }, handleEvent(e) { if (e.type == "mousedown") { if (e.button || e.shiftKey || e.altKey || e.detail != 1) return; var a = e.originalTarget.closest("a[href]"); if (!a || a.href.startsWith("javascript:")) return; this.ctrl = e.ctrlKey; this.initLongPress(a); } else { if (e.type == "click" && !this.link) e.preventDefault(); this.destroyLongPress(); } }, get timer() { delete this.timer; return this.timer = Cc["@mozilla.org/timer;1"] .createInstance(Ci.nsITimer); }, notify() { sendSyncMessage("%MR%", [this.link.href, this.link.ownerDocument.URL, this.ctrl]); this.link = null; if (!%BG%) this.destroyLongPress(); }, initLongPress(a) { addEventListener("click", this, true); addEventListener("dragstart", this, false); this.timer.initWithCallback(this, %DL%, this.timer.TYPE_ONE_SHOT); this.link = a; }, destroyLongPress() { removeEventListener("click", this, true); removeEventListener("dragstart", this, false); this.link && this.timer.cancel(); this.link = null; } }).init();`);
Наводим курсор на ссылку, он принимает вид ладошки. Делаем длинный клик, открывается страница в новой вкладке, но курсор не меняет свой вид, так и остается в виде ладошки.
Чтобы курсор вернулся в исходное состояние, его надо увести за пределы окна, либо навести на одну из панелей браузера. В однопроцессорном режиме такого нет, всё работает как надо.
Не могу понять, это какой-то мой локальный глюк или проблема всё-таки в коде?
P.S. Версия 77.0.1
Отредактировано unter_officer (24-06-2020 03:22:17)
«The Truth Is Out There»
Отсутствует
Не могу понять, это какой-то мой локальный глюк или проблема всё-таки в коде?
P.S. Версия 77.0.1
Глюку сто лет, однако, похоже, исчезнет в Firefox 78
(читай - через неделю, а RC build1 доступен уже сейчас),
но лучше использовать расширение или WebExtensions.
Отсутствует
Dumby
Заметил такую шнягу , иконка плеера на панели больших размеров , чем 16х16 , а в контексте норм
Пришлось это убрать, может дорихтовать надо?
var menu = self.appendChild(document.createXULElement("menupopup")); self.image = "moz-icon://file://" + path; var playerName = path.split("\\").pop().replace(".exe","");
Отсутствует
похоже, исчезнет в Firefox 78
Nightly 79 - глюк как был так и есть,
в linux по другому воспроизводится, при переключении обратно на страницу в которой был mousedown но не было mouseup и click,
к курсору прикрепляется страница, как при перетаскивании
Отредактировано Vitaliy V. (24-06-2020 14:07:07)
Отсутствует
Nightly 79 - глюк как был так и есть
Поставил 78.0esr-candidates build2 (32-bit).
Всё работает как надо, глюка нет.
P.S. Посмотрим, что будет в релизной версии.
Отредактировано unter_officer (24-06-2020 14:33:46)
«The Truth Is Out There»
Отсутствует
Всё работает как надо, глюка нет.
Всё это когда на всех платформах работает как надо, а не только на .
А ну да для юзеров только одна винда и существует...
Отсутствует
А ну да для юзеров только одна винда и существует...
Ну, извини. Вот такие мы, виндузятники.
«The Truth Is Out There»
Отсутствует
может дорихтовать надо?
Может быть, но это же надо на чём-то конкретном смотреть.
Попробуй прописать каких-нибудь подгоночных значений для CSS-свойств (типа width, height, padding)
self.icon.style.cssText = "…: … !important; …: … !important;";
в linux по другому воспроизводится, при переключении обратно на страницу в которой был mousedown но не было mouseup и click,
к курсору прикрепляется страница, как при перетаскивании
Проверил на 79 и Mint. Действительно, возвращаешься обратно, и указатель мыши
цепляет ссылку, и не отпускает, пока не кликнешь где-нибудь, или пока не нажмёшь Esc.
Наблюдается, даже если всё в родительском процессе, например самоссылки на странице about:license
Отсутствует
Всем привет, ищу кнопку добавляющую поиск в гугле(например) в контекстное меню
Чтобы выделил слово - открыл контекстное меню - нажал кнопку - открылась вкладка с поиском
Киньте пожалуйста у кого есть
Отсутствует
Все что нашел, это вот код добавляющий ссылку на любой сайт в контекстное меню
((contextMenu) => { var array = [ { lab: "Новая вкладка", url: "about:newtab", img: "https://addons.cdn.mozilla.net/user-media/collection_icons/5574/5574260.png?m=1426540508"}, { lab: "Google", url: "https://www.google.com", img: "https://www.google.lv/favicon.ico"}, { lab: "Youtube", url: "https://www.youtube.com/", img: "https://www.youtube.com/favicon.ico"} ] array.forEach(function(m,i) { var mItem = document.createElement("menuitem"); mItem.setAttribute("label", m.lab ); mItem.setAttribute("id", "link"+i ); mItem.setAttribute("url", m.url ); mItem.setAttribute("class", "menuitem-iconic"); mItem.setAttribute("image", m.img ); mItem.addEventListener("click", openLink ); contextMenu.appendChild( mItem ); }); function openLink(e) { var url = e.target.getAttribute("url"); e.button ? gBrowser.selectedTab = gBrowser.addTab(url) : loadURI(url); }; addDestructor(()=> array.forEach(function(m,i) contextMenu.removeChild(document.getElementById('link'+i)) )); })(document.getElementById("contentAreaContextMenu") );
Если кто может помогите пожалуйста сделать чтобы искало выделеное на странице слово
Отсутствует
Dumby, ну подправьте пожалуйста этот код для работы в user_chrome_files, для актуальных версий firefox.
А то подключил к комплекту, скрипт работает, да только при каждом клике, помимо того, что открывается новая вкладка, так ещё и окно разворачивается/сворачивается.
Юзерскрипты подключаю по этому методу, хотя наверное не столь важно. Спасибо.
Отсутствует
Есть код взятый отсюда.
Сразу оговорюсь, код правил под себя, т.е. выкинул из него всё то, что мне не нужно.
Код прекрасно работает на крайней версии .
/*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); } // Сохранение сессий ..... 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); }
Решил я потестировать будущую версию ESR, поставил 78 ESR RC2 (x86) - https://archive.mozilla.org/pub/firefox … es/build2/
На ней этот код тоже работает, но при вызове функции prompt, в консоли появляется ошибка:
Prompter: Browser not available or tab modal prompts disabled. Falling back to window prompt. Prompter.jsm:1051
В принципе эта ошибка ни на что не влияет, код работает нормально, но хотелось бы от неё избавиться. Не подскажите как?
Отредактировано unter_officer (26-06-2020 02:11:53)
«The Truth Is Out There»
Отсутствует
ну подправьте пожалуйста этот код для работы в user_chrome_files, для актуальных версий firefox.
А то подключил к комплекту, скрипт работает, да только при каждом клике, помимо того, что открывается новая вкладка, так ещё и окно разворачивается/сворачивается.
(sel => { var bot = e => !(e.button || e.ctrlKey || e.shiftKey || e.altKey) && e.target.matches(sel) && BrowserOpenTab(e.preventDefault()); var bar = document.getElementById("TabsToolbar"); bar.addEventListener("dblclick", bot, false); addEventListener("unload", () => bar.removeEventListener("dblclick", bot, false) , {once: true}); })("#tabbrowser-arrowscrollbox,toolbarspring,#TabsToolbar");
при вызове функции prompt, в консоли появляется ошибка
Увы, дело здесь не в коде.
Можешь просто alert(); запустить и полюбоваться на эту же ошибку.
Видимо, когда затеяли баг,
идея гадить пользователю в консоль показалась им хорошей.
Конкретно prompt в кнопке можно свой попробовать запилить, примерно как-то так
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; }
Отредактировано Dumby (26-06-2020 09:42:57)
Отсутствует
Конкретно prompt в кнопке можно свой попробовать запилить, примерно как-то так
Dumby, спасибо! Теперь всё нормально, ошибки нет.
Там ещё такая же история с confirm, но это я решил путем замены confirm на custombuttons.confirmBox.
«The Truth Is Out There»
Отсутствует
как создать Windows-ярлык (.lnk)?
Имеется файл, к примеру,
"C:\Мой файл.txt"
на который необходимо создать Windows-ярлык, к примеру,
"Тест.lnk"
в папке "D:\Мое хранилище"
как создать кнопку, которая при нажатии реализовала такую операцию
(это конечно шаблон для более сложных построений).
Что-то читал про объект XPInstall file.windowsShortcut но не могу увязать в единое целое те скупые сведения почти без примеров, которе нашел через Гугл
Отсутствует
Конкретно prompt в кнопке можно свой попробовать запилить, примерно как-то так
скрытый текстВыделить кодКод:
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; }
Dumby, если не сложно, набросайте такие же свои функции для alert(); и confirm();
Думаю, пригодятся в будущем.
«The Truth Is Out There»
Отсутствует
как создать Windows-ярлык (.lnk)?
Имеется файл, к примеру,
"C:\Мой файл.txt"
на который необходимо создать Windows-ярлык, к примеру,
"Тест.lnk"
в папке "D:\Мое хранилище"
как создать кнопку, которая при нажатии реализовала такую операцию
var shortcut = FileUtils.File("D:\\Мое хранилище") .QueryInterface(Ci.nsILocalFileWin); shortcut.append("Тест.lnk"); var trg = FileUtils.File("C:\\Мой файл.txt"); shortcut.setShortcut(trg);
если не сложно, набросайте такие же свои функции для alert(); и confirm();
Так всё то же самое
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);
Отсутствует
Так всё то же самое
скрытый текстВыделить кодКод:
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);
Dumby, спасибо большое!
«The Truth Is Out There»
Отсутствует