И вопрос, написано "Fix menu auto-opening in Firefox 69+" то есть там уже она есть? Почему тогда не открывалось автоматом?..
Чтобы открылось автоматом должен быть
открыт какой-нибудь из коллег по тулбару.
при клике все норм при автопопапе криво вниз
Это на вертикальном тулбаре что ли?
Можно попробовать заменить в автопопапе 'after_start'
на DropElt.closest("toolbar[orient=vertical]") ? "end_before" : "after_start"
Отсутствует
Странно. Тут https://addons.thunderbird.net/en-us/firefox/addon/custom-buttons/ написано, что custom-buttons в Quantum не работают, но тема живая.
Как вы работаете с custom-buttons? Подключаете поддержку устаревших расширений?
Отсутствует
Отсутствует
Dumby
Сработало ураа) да на вертикальном.
// ==UserScript== // @name AutoPopup.uc.js // @description Auto popup menulist/menupopup/Panelpopup // @compatibility Firefox 2.0+ // @author GOLF-AT // @version 2.0.0.20131119 (function(){var PopElt=null;var DropElt=null; var PopTimer=null;var HideTimer=null; var AlwaysPop=false;var nDelay=600; function IsNewMenuBtn(elt){try{return elt.id=='PanelUI-menu-button';}catch(e){return false;}} function AutoPopup(){PopTimer=null; if (DropElt){ if (DropElt.localName=='dropmarker' || IsNewMenuBtn(DropElt)) PopElt=DropElt; else{ var v=null; try{v=DropElt.ownerDocument. getAnonymousNodes(DropElt); }catch(ex){} if(v!=null && v.length!=0 && v[0]. localName=='menupopup') PopElt = v[0]; else PopElt=DropElt.childNodes[0];} if (IsNewMenuBtn(PopElt)){PanelUI.show();return;} try{PopElt.openPopup(PopElt.parentNode, DropElt.closest("toolbar[orient=vertical]")?'end_before':'after_start'); //('after_start');|forum.mozilla-russia.org/viewtopic.php?pid=773032#p773032 }catch(e){PopElt=null;} } } function HidePopup() { try { if (PopElt.localName=='dropmarker') PopElt.parentNode.closePopup(); else if (IsNewMenuBtn(PopElt)) PanelUI.hide(); else PopElt.hidePopup(); }catch(e) {} HideTimer = null; DropElt = null; PopElt = null; } function MouseOver(e) { if (!AlwaysPop && !document.hasFocus()) return; if (e.target.getAttribute('cb-name') == "Proxy") return; if (e.target.getAttribute('cb-name') == "Merge Custom Button") return; if (e.target.getAttribute('cb-name') == "Session Bookmarks") return; if (IsButton(e.target)) { type = e.target.getAttribute('type'); if (type == 'menu-button') { if (e.originalTarget!=e.target) return; } /*else { if (type != 'menu') return; }*/ } if (HideTimer) { window.clearTimeout(HideTimer); HideTimer = null; } try { if ('PopupAutoComplete'==e.target.id. substr(0,17)) return; for(var elt=e.target; elt!=null; elt= elt.parentNode) { if (elt.localName=='popup' || elt. localName=='menupopup') return; } }catch(ex) {} if (IsNewMenuBtn(PopElt)) { if (e.target != PopElt) HidePopup(); } else if (PopElt != null) { if (DropElt!=null && e.target==DropElt) return; try { if (PopElt.localName != 'dropmarker' ) { for(var elt=e.target; elt!=null; elt=elt.parentNode) { if (elt == PopElt) return; } } }catch(ex) {} HidePopup(); } DropElt = e.target; PopTimer = setTimeout(AutoPopup, nDelay); } function MouseOut(e) { if (PopTimer) { window.clearTimeout(PopTimer); PopTimer = null; } if (!HideTimer && PopElt && !IsNewMenuBtn(e. target)) HideTimer = window.setTimeout(HidePopup, 500); } function IsButton(elt) { try { return elt.localName=='toolbarbutton' || elt .localName=='button'; }catch(e) { return false; } } function IsMenuButton(elt) { if (IsNewMenuBtn(elt)) return true; if (!IsButton(elt)) return false; for(var i=0; i<2; i++) { try { var nodes = i==0x01 ? elt.childNodes : elt. ownerDocument.getAnonymousNodes(elt); if (nodes!=null && nodes.length && nodes[0] .localName=='menupopup') return true; }catch(e) {} } return false; } function EnumElement(elt) { try { if (elt.localName == 'prefpane') { elt.addEventListener('paneload', function(e) { setTimeout(function() { EnumElement(e. target); }, 100); }, false); } else if(elt.id=='sidebar' && !elt.hasAttribute( 'AutoPopup')) { elt.setAttribute('AutoPopup', true) elt.addEventListener('SidebarFocused', function(e) { EnumElement(elt); }, false); } else if(elt.id == 'editBookmarkPanel') return; }catch(e) {} for(var i=0; i<2; i++) { var nodes = null; try { if (elt.localName == 'browser') { i = 1; nodes = elt.contentDocument.childNodes; } else nodes = i==0x01 ? elt.childNodes : elt. ownerDocument.getAnonymousNodes(elt); }catch(e) { nodes = null; } if (nodes == null) continue; for(var n=0; n<nodes.length; n++) { try { var node = nodes[n]; if ('PopupAutoComplete'==node.getAttribute( 'id').substr(0,17) || 'menupopup'==node .localName || node.localName=='popup') ; else if (node.localName != 'dropmarker') { if (node.localName=='menu' && 'menubar' ==node.parentNode.localName) ; else if(!IsMenuButton(node)) node = null; } else if(node.getAttribute('type')=='menu') { node = node.parentNode; if (!node.firstChild || node.firstChild. localName!='menupopup') continue; } if (node == null) { EnumElement(nodes[n]); continue; } if (node.hasAttribute('command')) continue; addEventListener('mouseout', MouseOut, false, node); addEventListener('mouseover',MouseOver, false, node); }catch(e) {} } } } setTimeout(function() { EnumElement(document); }, 1100);})();
Отредактировано func4ptch4 (07-09-2019 20:17:20)
Отсутствует
func4ptch4
Ашто она делает?
Отсутствует
Dumby
http://htmlbook.ru/css/padding
Что делать? Падает 69 при MOZ_FORCE_DISABLE_E10S=1 или в коде это, падает при без мульти...
Это Зачем?
Отредактировано solombala (07-09-2019 18:04:51)
Отсутствует
Ребята есть ли кнопка для копипаста?
На некоторых сайтах когда копируешь текст и вставляешь его в другой документ, то автоматом добавляется ссылка на страницу откуда было скопировано.
Хотелось бы запретить автоматическое добавление ссылок.
А на других сайтах текст вообще не выделяется и не копируется
Есть ли кнопка, которая позволяла бы копирование?
Отредактировано leex (08-09-2019 19:11:53)
Отсутствует
leex user_pref("dom.event.clipboardevents.enabled",false); //=Не вставляются комментарии на Youtube - изменить (п.у. true), глючит фейсбук!
//=Запрет сайту знать что вы копировали, также убирает копирайт.
// ==UserScript== // @name Absolute Enable Right Click & Copy // @namespace Absolute Right Click // @description Force Enable Right Click & Copy & Highlight // @shortcutKeys [Ctrl + `] Activate Absolute Right Click Mode To Force Remove Any Type Of Protection // @author Absolute // @version 1.8.9 // @include *://* // @icon https://i.imgur.com/AC7SyUr.png // @compatible Chrome Google Chrome + Tampermonkey // @grant GM_registerMenuCommand // @license BSD // @copyright Absolute, 2016-Oct-06 // ==/UserScript== (function() { 'use strict'; var css = document.createElement('style'); var head = document.head; css.type = 'text/css'; css.innerText = `* { -webkit-user-select: text !important; -moz-user-select: text !important; -ms-user-select: text !important; user-select: text !important; }`; function main() { var doc = document; var body = document.body; var docEvents = [ doc.oncontextmenu = null, doc.onselectstart = null, doc.ondragstart = null, doc.onmousedown = null ]; var bodyEvents = [ body.oncontextmenu = null, body.onselectstart = null, body.ondragstart = null, body.onmousedown = null, body.oncut = null, body.oncopy = null, body.onpaste = null ]; [].forEach.call( ['copy', 'cut', 'paste', 'select', 'selectstart'], function(event) { document.addEventListener(event, function(e) { e.stopPropagation(); }, true); } ); alwaysAbsoluteMode(); enableCommandMenu(); head.appendChild(css); document.addEventListener('keydown', keyPress); } function keyPress(event) { if (event.ctrlKey && event.keyCode == 192) { return confirm('Activate Absolute Right Click Mode!') == true ? absoluteMode() : null; } } function absoluteMode() { [].forEach.call( ['contextmenu', 'copy', 'cut', 'paste', 'mouseup', 'mousedown', 'keyup', 'keydown', 'drag', 'dragstart', 'select', 'selectstart'], function(event) { document.addEventListener(event, function(e) { e.stopPropagation(); }, true); } ); } function alwaysAbsoluteMode() { let sites = ['example.com','www.example.com']; const list = RegExp(sites.join('|')).exec(location.hostname); return list ? absoluteMode() : null; } function enableCommandMenu() { var commandMenu = true; try { if (typeof(GM_registerMenuCommand) == undefined) { return; } else { if (commandMenu == true ) { GM_registerMenuCommand('Enable Absolute Right Click Mode', function() { return confirm('Activate Absolute Right Click Mode!') == true ? absoluteMode() : null; }); } } } catch(err) { console.log(err); } } var blackList = [ 'youtube.com','.google.','.google.com','greasyfork.org','twitter.com','instagram.com','facebook.com','translate.google.com','.amazon.','.ebay.','github.','stackoverflow.com', 'bing.com','live.com','.microsoft.com','dropbox.com','pcloud.com','box.com','sync.com','onedrive.com','mail.ru','deviantart.com','pastebin.com', 'dailymotion.com','twitch.tv','spotify.com','steam.com','steampowered.com','gitlab.com','.reddit.com' ] var enabled = false; var url = window.location.hostname; var match = RegExp(blackList.join('|')).exec(url); if (window && typeof window != undefined && head != undefined) { if (!match && enabled != true) { main(); enabled = true //console.log(location.hostname); window.addEventListener('contextmenu', function contextmenu(event) { event.stopPropagation(); event.stopImmediatePropagation(); var handler = new eventHandler(event); window.removeEventListener(event.type, contextmenu, true); var eventsCallBack = new eventsCall(function() {}); handler.fire(); window.addEventListener(event.type, contextmenu, true); if (handler.isCanceled && (eventsCallBack.isCalled)) { event.preventDefault(); } }, true); } function eventsCall() { this.events = ['DOMAttrModified', 'DOMNodeInserted', 'DOMNodeRemoved', 'DOMCharacterDataModified', 'DOMSubtreeModified']; this.bind(); } eventsCall.prototype.bind = function() { this.events.forEach(function (event) { document.addEventListener(event, this, true); }.bind(this)); }; eventsCall.prototype.handleEvent = function() { this.isCalled = true; }; eventsCall.prototype.unbind = function() { this.events.forEach(function (event) {}.bind(this)); }; function eventHandler(event) { this.event = event; this.contextmenuEvent = this.createEvent(this.event.type); } eventHandler.prototype.createEvent = function(type) { var target = this.event.target; var event = target.ownerDocument.createEvent('MouseEvents'); event.initMouseEvent( type, this.event.bubbles, this.event.cancelable, target.ownerDocument.defaultView, this.event.detail, this.event.screenX, this.event.screenY, this.event.clientX, this.event.clientY, this.event.ctrlKey, this.event.altKey, this.event.shiftKey, this.event.metaKey, this.event.button, this.event.relatedTarget ); return event; }; eventHandler.prototype.fire = function() { var target = this.event.target; var contextmenuHandler = function(event) { event.preventDefault(); }.bind(this); target.dispatchEvent(this.contextmenuEvent); this.isCanceled = this.contextmenuEvent.defaultPrevented; }; } })();
Отредактировано func4ptch4 (08-09-2019 03:36:59)
Отсутствует
Не знаю, как сейчас с этой настройкой, но раньше с ней не вставлялись комментарии на ютубе и глючил фейсбук...
На WF работает и комменты вроде нормально. Если есть проблемы с сайтами, то можно запретить на них работу скрипта.
Отсутствует
Ultima2m
Нашёл у себя для таких случаев древний букмарклет. Не знаю, работает ли, хотел проверить, что есть WF?
javascript:(function(w){var%20arr=['contextmenu','copy','cut','paste','mousedown','mouseup','beforeunload','beforeprint'];for(var%20i=0,x;x=arr[i];i++){if(w['on'+x])w['on'+x]=null;w.addEventListener(x,function(e){e.stopPropagation()},true)};for(var%20j=0,f;f=w.frames[j];j++){try{arguments.callee(f)}catch(e){}}})(window);
Отсутствует
Dumby
такая вот шняга с 69 , если стили меняю на xhtml, окно не такое. Нет новой версии СВ ? Сам рихтовал,но не то.Ставлю старую, тогда и стили не трогаю и в
AppConstants.jsm меняю
Отредактировано solombala (10-09-2019 13:54:06)
Отсутствует
Здравствуйте, как сделать чтобы он один раз сделал назад?
FileUtils.getFile("CurWorkD",["..","gBrave 0.67","brave-portable.exe"]); FileUtils.File("/CurWorkD","\\..\\gBrave 0.67\\brave-portable.exe");
Как в этом коде.
function openBrave(){ var prof=Services.dirsvc.get('CurWorkD',Ci.nsIFile); var process=Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); prof.initWithPath(prof.path+"\\..\\gBrave 0.67\\brave-portable.exe"); var uri=gBrowser.currentURI.spec; var uri=/.рф/.test(uri)?Services.io.newURI(uri,null,null).asciiSpec:uri; process.init(prof); process.run(false,[uri],1); }; /**/
Отредактировано func4ptch4 (11-09-2019 13:18:59)
Отсутствует
как сделать чтобы он один раз сделал назад?
Да как обычно
var file = Services.dirsvc.get("CurWorkD", Ci.nsIFile).parent; ["gBrave 0.67", "brave-portable.exe"].forEach(file.append); alert(file.path);
var uri = Services.io.newFileURI(Services.dirsvc.get("CurWorkD", Ci.nsIFile)); uri = Services.io.newURI("../gBrave 0.67/brave-portable.exe", null, uri); var {file} = uri.QueryInterface(Ci.nsIFileURL); alert(file.path);
Отсутствует
Здравствуйте. Был такой код, а теперь не работает. Что нужно исправить в нем?:
var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile); file.initWithPath("C:\\Users\\Alewww\\PycharmProjects\\script.bat"); file.launch();
и еще вот этот также не работает. Что нужно здесь подправить?:
startProcess("C:\\Users\\Alewww\\PycharmProjects\\script2.bat",[""]); function startProcess(path, args) { var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); file.initWithPath(path); if(file.exists()) { var process = Components.classes["@mozilla.org/process/util;1"] .createInstance(Components.interfaces.nsIProcess); process.init(file); process.run(false, args, args.length); } else custombuttons. alertBox ("Файл не найден", path); };
Отсутствует
Alewww
Где-то так
Отсутствует
Alewww
Насчет 2 кода, не совсем понял что он делает) но можно примерно сделать так, в общем непонятно что я сделал)
function startProcess(path,args){ //file.initWithPath(path); //if(file.exists()) {var process=Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); process.init(FileUtils.File('C:\\Users\\Alewww\\PycharmProjects\\script2.bat'));process.run(false,args,args.length); }else custombuttons.alertBox("Файл не найден",path); }; //======================================================== //function startProcess(args){ //var p=Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); //p.init(FileUtils.getFile('Home',['PycharmProjects','script2.bat'));p.run(false,args,args.length);};
Отредактировано func4ptch4 (13-09-2019 14:13:42)
Отсутствует
Dumby
Приморила эта 69...Падает 69 кое-где без мультиhttp://htmlbook.ru/css/padding
Нет настройки , чтоб не падала?
Отредактировано solombala (13-09-2019 10:06:34)
Отсутствует
solombala
К сожалению, ничем помочь не могу. Про контентские дела
меня спрашивать бесполезно, и если бы мог написать что-нибудь
умнее чем «паддинг же, вот и падает», то написал бы сразу.
А вообще, для десктопа, однопроцессный Firefox считается у них
как «неподдерживающаяся конфигурация», со всеми вытекающими.
Простейший пример: выключаем e10s, вызываем ChromeUtils.requestProcInfo();
Получаем краш. Причём изначально метод работал и в однопроцессном.
И дальше, видимо, будет только хуже.
Отредактировано Dumby (13-09-2019 12:00:12)
Отсутствует