OK, ich werde dann vielleicht doch mal Tampermonkey oder Violentmonkey (Tipp aus dem anderen Thread, von miku23) testen.
userChrome.js Scripte für den Fuchs (Diskussion)
-
Endor -
12. Mai 2015 um 14:19 -
Erledigt
-
-
Servus in die Werkstatt.
Wenn einer Ahnung, Lust und vor allem Zeit hätte, sich hier mal 2 Klamotten anzugucken, die leider nicht mehr funktionieren wollen. Wir sind im aktuellen Fuchs 54 und mit den 3 neuen JS Config-Dateien von Kamerad aborix. Aber auch ohne diesen und mit aktivierter userChrome.js Erweiterung das gleiche Bild.MCPasteAndGo // Konsole sagt:
gefällt mir nicht und bei
ist Cc nicht definiert!
Progressbar in Tab // Konsole sagt wieder:
gefällt mir nicht und bei
ist makeURI nicht definiert!
Gleichzeitig gibt es auch nen Fehler in der userChromeJS.js im Profil und zwar
Hier scheint dem Fuchs wohl der Loader String irgendwie nicht zu gefallen. Scripte werden aber trotzdem geladen!
Eigentlich gefällt dem ollen Fuchs mtw. gar nichts mehr so richtig, sobald man nur nen kleinen 5er Imbus aus der Kiste holt :roll::grr:
Übrigens, den Fehler mit RestartFirefoxButton_Movable konnte ich doch noch aus der Welt schaffen.
-
Hallo Hombre,
in Anlehnung zu MCPasteAndGo, das Script ist gut, aber kennst Du vielleicht ein Script, welches den markierten Text per Mittelklick direkt suchen lässt?
-
Servus mein Jung,
sowat direkt haben wir wohl nicht im Angebot. Ich mach das anstatt mit Klicks, mit kleinen Mausbewegungen. Also zB. Wort markieren, kurz nach rechts ziehen und fallen lassen.
Dazu wären dann zB. diese Scripte hier zu nennen: DragNgo.uc.js mit vielen Funktionen, oder auch EasyDragToGo_Mod.uc.js als ne schlanke Alternative. -
Hallo Hombre,
danke für den Tipp, aber ich bin irritiert.
Drag and go kann laut Beschreibung doch nur 1 Sache.
Wo sind denn die vielen Funktionen? Und wieso sind die nicht beschrieben?Das schlanke Gegenstück Easy Drag To Go_Mod, was sich "nur" auf das Wesentliche beschränken soll, das kann doch weitaus mehr. Ist denn das kein Widerspruch?
Dann stellt sich mir die Frage, warum auch dort keine Beschreibung zu finden ist, mit welchen Tasten/Gesten die vielen Funktionen gesteuert werden.
Drag and go ist zwar klasse, aber es erfüllt nicht meinen Wunsch, da nur Webseiten geöffnet werden.
Auch finde ich die Beschreibung nicht ganz richtig, denn da fehlt etwas.Da steht:
ZitatWird über Mausgesten gesteuert. Links "anfassen" und "fallen lassen" öffnet den Link in einem neuen Tab.
Erspart Add-Ons wie QuickDrag etc..Aber das Script kann mehr, dann das Script behandelt nicht nur echte Links, das Script wandelt jeden markierten Text in eine URL um. Wenn ich z.B den Begriff Qualcomm (nur Text) markiere, ziehe und fallen lasse, dann ruft das Script https://www.qualcomm.de auf. Diese Info fehlt.
-
Ach mein alter camel
Was soll ich dir dazu sagen.
Wir hatten und haben weder Nerven, noch die Zeit dazu, bei jedem Script alles bis aufs kleinste detail zu beschreiben. Wir waren schon froh, soviel Klamotten beisammen zu kriegen und sie über längere Zeit und über mehrere Füchse hinweg so halbwegs am Leben zu halten.
Und das alles irgendwo in der Nacht zwischen Familie, Job und Bett.Markiere einfach mal was und bewege das dann in alle Himmelsrichtungen, dann wirste schon erkennen, welche Funktionen so am Start sind.
In der leichten Version ziehst du das markierte kurz nach links und es wird dir in neuem Tab alles automatisch bei Google ins deutsche übersetzt.
Ansonsten hab ich mir damals zumindest die Mühe gemacht, die einzelnen Funktionen auf deutsch ins Script zu schreiben. -
Wir hatten und haben weder Nerven, noch die Zeit dazu, bei jedem Script alles bis aufs kleinste detail zu beschreiben. Markiere einfach mal was und bewege das dann in alle Himmelsrichtungen, dann wirste schon erkennen, welche Funktionen so am Start sind.
Ah, mein dunkler Geselle, das ist eine gute Idee, ich switche und swatche. Ich werde unserer Entwicklung mal mitteilen, dass sie in Zukunft keine Gedanken mehr an die Symbolik der Schalter zu verschwenden braucht. Die Kunden sollen einfach hier mal ziehen oder dort mal drücken. Das wird der Brüller. :mrgreen:
Das ist er übrigens auch immer dann, wenn man Freunde mit einem Xiaomi oder Meizu während dem Toilettengang ärgern möchte. Einfach mal die Sprache umstellen... :lol:
-
Hallo,
ich habe interessehalber mal die Erweiterung userChromeJS installiert und von ardiman/... einige uc.js Dateien runtergeladen und ausprobiert.
Zu meinem Verständnis einige Fragen: werden diese Dateien jedesmal neu geladen? Ich dachte der Code wird z.B. in die userChrome.js übernommen.
Wenn ich das Addon userChromeJS wieder deinstalliere ist dann der FF wieder wie vorher oder muss noch mehr bereinigt werden? (Damit meine ich nicht die uc.js Dateien aus dem Chrome Verzeichnis löschen)Schon mal Danke für eure Antworten.
-
Ich dachte der Code wird z.B. in die userChrome.js übernommen.
Nein, die Scripte sind alle im Ordner chrome.
In der Datei userChrome.js befindet sich der Eintrag (userChrome.import("*", "UChrm");) um diese Scripte nutzen zu können.
muss noch mehr bereinigt werden?
Du könntest noch den Eintrag userChrome.import("*", "UChrm"); aus der userChrome.js Datei wieder löschen.Für die Zukunft evtl. eine Überlegung wert, du könntest dir ja auch ein weiteres Profil erstellen, und das dann nur für solche Testzwecke nutzen.
-
Vielen Dank Andreas für die Infos.
Das mit dem zweiten Profil werde ich machen. Nur, manchmal ist man so beim stöbern, kommt auf irgendwelche Ideen und probiert die dann gleich aus. Da ist dann nicht immer alles logisch was ich da mache.
-
[...] sich hier mal 2 Klamotten anzugucken, die leider nicht mehr funktionieren wollen.
[...]
MCPasteAndGoBitte testet mal das folgende Skript.
Es funktioniert noch nicht
- in der Findbar
- und mit e10s bei Eingabefeldern auf Webseiten.Code
Alles anzeigen// ==UserScript== // @name MCPasteAndGo.uc.js // @description 中クリックであらゆるウェブページやブラウザの入力欄で貼り付けて検索を実行します。 // @version 1.0 // @author y2k // @include main // @namespace http://tabunfirefox.web.fc2.com/ // @note 正確にはmousedownで貼り付け、mouseupで検索 // @note 中クリックの代わりにshift+クリックでも可 // ==/UserScript== (function() { function LOG(text) { Services.console.logStringMessage("[MCPasteAndGo] " + text); } var PasteOnlyHtmlID = { // "id": "url", // "id": [ "url1", "url2", "url3" ], // "lst-ib": "http://www.google.de/", }; var PasteOnlyXulID = { browserHomePage: true, }; var TagAction = { //HTMLのinput INPUT: { paste: function(target, text) { target.value = text; }, go: function(target) { var url = target.ownerDocument.defaultView.location.href; var list = PasteOnlyHtmlID[target.id]; if (list) { list = (list instanceof Array) ? list : [ list ]; for (var i = 0, l = list.length; i < l; i++) { if (url.indexOf(list[i]) >= 0) { return; } } } if (target.form) { target.form.submit(); } else { var event = document.createEvent("KeyboardEvent"); event.initKeyEvent("keydown", true, true, null, false, false, false, false, 13, 0); target.dispatchEvent(event); } }, }, //HTMLのtextarea TEXTAREA: { paste: function(target, text) { target.focus(); var value = target.value; var pos = target.selectionStart; var newpos = pos + text.length; target.value = [ value.substr(0, pos), text, value.substr(pos) ].join(""); target.setSelectionRange(newpos, newpos); }, go: function() { //paste only }, }, //ブラウザのtextbox textbox: { paste: function(target, text) { target.value = text; }, go: function(target) { if (PasteOnlyXulID[target.id]) { return; }; if (target.id == "urlbar") { document.getElementById("urlbar-go-button").click(); } else { var event = document.createEvent("KeyboardEvent"); event.initKeyEvent("keypress", true, true, null, false, false, false, false, 13, 0); target.dispatchEvent(event); } }, }, //検索バー searchbar: { paste: function(target, text) { if (target._textbox) { target._textbox.value = text; } }, go: function(target, e) { if (target.handleSearchCommand) { target.handleSearchCommandWhere(e, null, "current", null); } }, }, //ページ内検索バー findbar: { paste: function(target, text) { if (target._findField) { target._findField.value = text; } }, go: function(target) { if (target.onFindAgainCommand) { target.onFindAgainCommand(false); } }, }, }; function checkEvent(e) { //中クリック or shift+クリック return (e.button == 1) || ((e.button == 0) && e.shiftKey); }; function getClipboardText() { var text = ""; var clip = Cc["@mozilla.org/widget/clipboard;1"].getService(Ci.nsIClipboard); var trans = Cc["@mozilla.org/widget/transferable;1"].createInstance(Ci.nsITransferable); if (clip && trans) { var str = new Object(); var strLength = new Object(); trans.addDataFlavor("text/unicode"); clip.getData(trans, clip.kGlobalClipboard); trans.getTransferData("text/unicode", str, strLength); if (str) { str = str.value.QueryInterface(Ci.nsISupportsString); text = str.data.substring(0, strLength.value / 2); } } return text; }; var clickTarget = false; function mousedown(e) { var target = e.target; clickTarget = null; if (checkEvent(e)) { LOG([ "tag: ", target.tagName, " id: ", target.id, " class: ", target.className ].join("")); var text = getClipboardText(); var action = TagAction[target.tagName]; if (text && action) { action.paste(target, text); clickTarget = target; } } }; function mouseup(e) { var target = e.target; if ((clickTarget === target) && checkEvent(e)) { var action = TagAction[target.tagName]; if (action) { action.go(target, e); } } clickTarget = null; }; window.addEventListener("mousedown", mousedown, false); window.addEventListener("mouseup", mouseup, false); })();
-
Hombre, wir kommen der Sache näher
Ist aktuell, wie von dir beschrieben. Allerdings geht hier damit in der Searchbar kein neuer Tab auf, sondern der aktuelle wird überschrieben. -
Soll sowohl bei Umschalt+Linksklick als auch bei Mittelklick ein neuer Tab geöffnet werden? Oder im einen Fall so, im anderen anders?
-
Also ich nutze immer nur den Mittelklick.
Komischerweise hat es auch immer so funktioniert. Liegt aber wohl damit zusammen, dass ich noch n Script nutze, womit alles erdenkliche in neuen Tabs aufgeht.
Nur jetzt in der Kombi mit deinem neuen MCPasteAndGo will es in der Searchbar nicht klappen. In der Urlbar dagegen kein Problem.Mit OpenNewTab.uc.js mach ich das ganze. Ist eine neue aktuelle Version, die auf Github aber noch nicht hoch geladen wurde.
Code
Alles anzeigen// ==UserScript== // @name openNewTab.uc.js // @namespace opennewtab@haoutil.com // @include main // @include chrome://browser/content/places/places.xul // @description Open Bookmarks/History/Search in New Tab // @downloadURL https://raw.githubusercontent.com/xinggsf/uc/master/openNewTab.uc.js // @version 1.3.1.2 // @Note xinggsf 2017.6.9 修改使之能用于FX53,修正BUG: vertical书签栏不能新开;搜索栏被移除导致脚本出错 // ==/UserScript== (function() { const b_urlbar = true, b_searchbar = true, // Inline function whereToOpenLink_code = `{ var b_bookmarks = true; var b_history = true; if (!e) return 'current'; var win = window.opener || window; if (win.isTabEmpty(win.gBrowser.mCurrentTab)) return 'current'; var node = e.originalTarget; if (node.matches('.bookmark-item')) return b_bookmarks ? 'tab' : 'current'; while (node) { switch (node.id) { case 'bookmarksMenuPopup': // menubar bookmarks case 'BMB_bookmarksPopup': // navibar bookmarks case 'bookmarksPanel': // sidebar bookmarks return b_bookmarks ? 'tab' : 'current'; case 'goPopup': // menubar history case 'PanelUI-history': // navibar history case 'history-panel': // sidebar history return b_history ? 'tab' : 'current'; case 'placeContent': // library bookmarks&history var collection = window.document.getElementById('searchFilter').getAttribute('collection'); var tab = collection === "bookmarks" && b_bookmarks || collection === "history" && b_history; return tab ? 'tab' : 'current'; } node = node.parentNode; } return 'current'; }`; if (location == 'chrome://browser/content/browser.xul') { /* :::: Open Bookmarks/History in New Tab :::: */ eval('whereToOpenLink = ' + whereToOpenLink.toString().replace(/return "current";/g, whereToOpenLink_code)); window.document.getElementById('sidebar').addEventListener('DOMContentLoaded', function(event) { const doc = event.originalTarget; const win = doc.defaultView.window; if (['chrome://browser/content/bookmarks/bookmarksPanel.xul', 'chrome://browser/content/history/history-panel.xul'].includes(win.location)) { eval('win.whereToOpenLink=' + win.whereToOpenLink.toString().replace(/return "current";/g, whereToOpenLink_code)); } else if (win.location == 'chrome://browser/content/readinglist/sidebar.xhtml') { /* :::: Open Sidebar ReadingList in New Tab :::: */ eval('win.RLSidebar.openURL = ' + win.RLSidebar.openURL.toString().replace(/log\.debug\(.*\);/, '').replace(/mainWindow\.openUILink\(url, event\);/, "var where = isTabEmpty(gBrowser.mCurrentTab) ? 'current' : 'tab';$&")); } }); /* :::: Open Url in New Tab :::: */ if (b_urlbar) { eval('gURLBar.handleCommand=' + gURLBar.handleCommand.toString().replace(/let where = openUILinkWhere;/, "let where = isTabEmpty(gBrowser.mCurrentTab) ? 'current' : 'tab';")); } /* :::: Open Search in New Tab :::: */ if (b_searchbar && BrowserSearch.searchBar) { eval('BrowserSearch.searchBar.handleSearchCommand=' + BrowserSearch.searchBar.handleSearchCommand.toString().replace(/this\.doSearch\(textValue, where(, aEngine)?\);|this\.handleSearchCommandWhere\(aEvent, aEngine, where, params\);/, "where = isTabEmpty(gBrowser.mCurrentTab) ? 'current' : 'tab';$&")); } } else if (location == 'chrome://browser/content/places/places.xul') { /* :::: Open Bookmarks/History in New Tab :::: */ eval('whereToOpenLink = ' + whereToOpenLink.toString().replace(/return "current";/g, whereToOpenLink_code)); } })();
-
Ich habe alle Updates an Mithrandir am 04.07.2017 weiter gegeben. Leider hat er bis jetzt
meine PN noch nicht gelesen. Sobald er Zeit hat wird er sich sicher darum kümmern.
Mfg.
Endor -
loshombre, damit geht es wieder:
Code
Alles anzeigen// ==UserScript== // @name MCPasteAndGo.uc.js // @description 中クリックであらゆるウェブページやブラウザの入力欄で貼り付けて検索を実行します。 // @version 1.0 // @author y2k // @include main // @namespace http://tabunfirefox.web.fc2.com/ // @note 正確にはmousedownで貼り付け、mouseupで検索 // @note 中クリックの代わりにshift+クリックでも可 // ==/UserScript== (function() { function LOG(text) { Services.console.logStringMessage("[MCPasteAndGo] " + text); } var PasteOnlyHtmlID = { // "id": "url", // "id": [ "url1", "url2", "url3" ], // "lst-ib": "http://www.google.de/", }; var PasteOnlyXulID = { browserHomePage: true, }; var TagAction = { //HTMLのinput INPUT: { paste: function(target, text) { target.value = text; }, go: function(target) { var url = target.ownerDocument.defaultView.location.href; var list = PasteOnlyHtmlID[target.id]; if (list) { list = (list instanceof Array) ? list : [ list ]; for (var i = 0, l = list.length; i < l; i++) { if (url.indexOf(list[i]) >= 0) { return; } } } if (target.form) { target.form.submit(); } else { var event = document.createEvent("KeyboardEvent"); event.initKeyEvent("keydown", true, true, null, false, false, false, false, 13, 0); target.dispatchEvent(event); } }, }, //HTMLのtextarea TEXTAREA: { paste: function(target, text) { target.focus(); var value = target.value; var pos = target.selectionStart; var newpos = pos + text.length; target.value = [ value.substr(0, pos), text, value.substr(pos) ].join(""); target.setSelectionRange(newpos, newpos); }, go: function() { //paste only }, }, //ブラウザのtextbox textbox: { paste: function(target, text) { target.value = text; }, go: function(target) { if (PasteOnlyXulID[target.id]) { return; }; if (target.id == "urlbar") { document.getElementById("urlbar-go-button").click(); } else { var event = document.createEvent("KeyboardEvent"); event.initKeyEvent("keypress", true, true, null, false, false, false, false, 13, 0); target.dispatchEvent(event); } }, }, //検索バー searchbar: { paste: function(target, text) { if (target._textbox) { target._textbox.value = text; } }, go: function(target) { if (target.handleSearchCommand) { document.getAnonymousElementByAttribute(target, "anonid", "search-go-button").click(); } }, }, //ページ内検索バー findbar: { paste: function(target, text) { if (target._findField) { target._findField.value = text; } }, go: function(target) { if (target.onFindAgainCommand) { target.onFindAgainCommand(false); } }, }, }; function checkEvent(e) { //中クリック or shift+クリック return (e.button == 1) || ((e.button == 0) && e.shiftKey); }; function getClipboardText() { var text = ""; var clip = Cc["@mozilla.org/widget/clipboard;1"].getService(Ci.nsIClipboard); var trans = Cc["@mozilla.org/widget/transferable;1"].createInstance(Ci.nsITransferable); if (clip && trans) { var str = new Object(); var strLength = new Object(); trans.addDataFlavor("text/unicode"); clip.getData(trans, clip.kGlobalClipboard); trans.getTransferData("text/unicode", str, strLength); if (str) { str = str.value.QueryInterface(Ci.nsISupportsString); text = str.data.substring(0, strLength.value / 2); } } return text; }; var clickTarget = false; function mousedown(e) { var target = e.target; clickTarget = null; if (checkEvent(e)) { LOG([ "tag: ", target.tagName, " id: ", target.id, " class: ", target.className ].join("")); var text = getClipboardText(); var action = TagAction[target.tagName]; if (text && action) { action.paste(target, text); clickTarget = target; } } }; function mouseup(e) { var target = e.target; if ((clickTarget === target) && checkEvent(e)) { var action = TagAction[target.tagName]; if (action) { action.go(target); } } clickTarget = null; }; window.addEventListener("mousedown", mousedown, false); window.addEventListener("mouseup", mouseup, false); })();
-
Hallo aborix.
Funktioniert das Script jetzt also wieder komplett?
Wenn ja reiche ich das auch gleich Mithrandir weiter.
Mfg.
Endor -
Es hat noch die Einschränkungen von #651.
Wie loshombre will. -
Danke. Dann warte ich mal bis loshombre sich meldet.
Mfg.
Endor -
Sehr schön Hombre aborix, funktioniert für mich genau so wie früher :klasse: Vielen Dank dafür!
Allerdings tut es nur für mich aktuell ausreichend. Im Grunde genommen ist das Script nach wie vor kaputt, weil es mit dem neuen Fuchs-Hauptbestandteil (e10s) nicht machen will.
Somit kann es aktuell leider auch nicht auf Github landen. -