Setze mal unten die Timeout-Zeit von 1000 auf 5000 hoch, mit 5000 funktioniert das Skript bei mir. Unter Umständen musst du den Wert noch höher heraufsetzen.
Bei mir funktioniert es auch nur mit 5000. Höhere Werte habe ich nicht probiert.
Setze mal unten die Timeout-Zeit von 1000 auf 5000 hoch, mit 5000 funktioniert das Skript bei mir. Unter Umständen musst du den Wert noch höher heraufsetzen.
Bei mir funktioniert es auch nur mit 5000. Höhere Werte habe ich nicht probiert.
Testet bitte. Die Änderungen sind ab Zeile 60. Weiter oben wird nur überprüft, ob der Ordner mehr als ein Lesezeichen enthält.
Super! Vielen Dank, aborix
Bei mir ist nur das Timeout von 1000 zu kurz.
aborix Was fehlt im Skript, um die Trennstriche nicht mitzuzählen? In Zeile 16 wird nach "menuitem" gesucht, also nicht "menuseparator".
Dem Skript scheint die CSS-Regel egal zu sein.
Wahrscheinlich weil die Trennlinie (unter deinem oberen LZ) fälschlicherweise mit gezählt wird
Das passt für alle Ordner hier, bei denen die Zahl nicht stimmt.
Wo wird die Anzahl welcher Links angezeigt?
Die Anzahl der Links in einem beliebigen Ordner wird damit angezeigt.
Dankeschön! Ging erst nicht. Ich musste erst den Timeout-Wert erhöhen, damit das bei mir auch angezeigt wird.
Die Zahl stimmt aber nicht immer, wie auch in deinem Screenshot.
Zeigt die Anzalh der enthalten Links als Zahl
Wo wird die Anzahl welcher Links angezeigt?
Hallo aborix ,
wieder mal genial! Funktioniert, vielen Dank
Was nicht funktioniert, ist "$" als Filter. Das hat aber nichts mit dem Skript zu tun, weil es auch nicht bei manueller Eingabe funktioniert. Dann sollen eigentlich alle Seiten angezeigt werden, die den Suchbegriff in der URL haben ( https://support.mozilla.org/de/kb/autoverv…ungen-vornehmen ), es wird aber nichts angezeigt. Kann das jemand bestätigen oder verstehe ich das falsch? Ich denke, dass dann alle Seiten aus Lesezeichen, Chronik und offenen Tabs angezeigt werden (wenn in den Sucheinstellungen aktiviert), die den Suchbegriff in der URL haben. Weiß Sören Hentzschel Rat?
Geht es dir eigentlich um etwas anderes als Chronik, Lesezeichen und offene Tabs? Falls dir das reicht, benötigst du gar kein Script. Mozilla hat entsprechende Filter-Buttons neben den Suchmaschinen-Icons implementiert. In der Nightly-Version kann das bereits getestet werden:
Ich hab gerade nicht im Kopf, ob das in Firefox 81 oder Firefox 82 Beta bereits aktiviert werden kann, das kann ich aber später noch prüfen.
Sieht interessant aus. Ich brauche oft noch die Schlagworte, aber das eine Zeichen kann ich mir vielleicht merken
Ich habe sehr viele Suchmaschinen gespeichert, sodass ich da erst 'ne Weile nach den Buttons suchen müsste, aber das lässt sich neu organisieren, weil ich für die Organisation der vielen Suchmaschinen das Addon ContextSearch verwende. In der URL-Leiste reichen dann die wichtigsten.
Trotzdem wäre es mir natürlich eine Befriedigung, wenn ich mit eurer Hilfe das Skript wieder zum Laufen kriegen würde.
setSelectionRange() ist eine Methode von HTMLInputElement, wie einem das MDN verrät [1].
Dein urlbar-Element ist eine hbox und kein HTMLInputElement. Wenn schon, müsstest du das auf deinem urlbarInput-Element ausführen.
Ich habe das Script nicht getestet, das dürfte aber nicht der einzige Fehler sein, da es ganz sicher auch kein value-Attribut bei einer hbox (Zeile 39) gibt.
https://developer.mozilla.org/en-US/docs/Web…tSelectionRange
Hallo Sören, Dankeschön! Das waren schon zwei wesentliche Tipps. Ich habe das Skript ja nicht selbst erstellt - kann ich gar nicht - sondern habe nur versucht, so weit ich konnte es wieder zum Laufen zu bringen.
Mit den geänderten Zeilen 39 und 41 wird das per Untermenü gewählte Zeichen jetzt in der URL-Leiste am Ende des vorhandenen Eintrags wie gewünscht angezeigt - nur filtert das noch nicht die Vorschläge. Wenn ich das Zeichen per Hand einfüge, wird gefiltert, wenn ich es per Skript einfüge, noch nicht. Ich vermute da fehlt noch was, damit es im FF als Eingabe ankommt. Wenn ich selbst die Eingabetaste drücke, verschwindet das Zeichen wieder.
Wenn ich mich recht erinnere, funktioniert dieser Teil des Skripts noch länger nicht, als dass das ganze Untermenü nicht mehr angezeigt wird.
Hast du noch eine Idee?
Oder aborix , du hast vorhin schon mal reingeschaut?
/* LocationbarCharacters.uc.js */
function initLocationBarCharacters() {
var urlbar = window.document.getElementById("urlbar"),
textBox = window.document.getElementById("urlbar-input-container"),
cxmenu = textBox.getElementsByClassName("textbox-contextmenu"),
cxmenu = cxmenu.item(0)
separator = document.createXULElement("menuseparator"),
menu = document.createXULElement("menu"),
popup = document.createXULElement("menupopup"),
labelArray = [
"* Lesezeichen",
"+ Schlagworte",
"$ Web-Adressen (URLs)",
"# Seitentitel",
"% Aktuell geöffneten Tabs",
"^ Chronik",
"? Eingegebene Seiten"
];
var i;
insertCharacters = function(sym) {
var urlbar = window.document.getElementById("urlbar"),
urlbarInput = window.document.getElementById("urlbar-input"),
urlbarText = urlbarInput.value,
urlbarFocus = window.document.getElementById("Browser:OpenLocation");
// urlbarFocus = window.document.getElementById("focusURLBar");
var pos;
urlbarFocus.doCommand();
if (urlbarText.length === 0) {
urlbarText = sym;
} else if (urlbarText.slice(-1) === " ") {
urlbarText = urlbarText + sym;
} else {
urlbarText = urlbarText + " " + sym;
}
urlbarInput.value = urlbarText;
pos = urlbarText.length;
urlbarInput.setSelectionRange(pos, pos);
},
makeMenuItem = function(label) {
var sym = label.slice(0, 1),
node = document.createXULElement("menuitem");
node.setAttribute("label", label);
node.addEventListener("command", function() { insertCharacters(sym); }, false);
popup.appendChild(node);
};
menu.setAttribute("label", "Einfügen (* + $ # % ^ ? )" );
menu.appendChild(popup);
for (i = 0; i < labelArray.length; i += 1) {
makeMenuItem(labelArray[i]);
}
cxmenu.appendChild(separator);
cxmenu.appendChild(menu);
}
initLocationBarCharacters();
Alles anzeigen
Ich kann mir die meisten Zeichen nicht merken, die man braucht, um die Vorschläge in der URL-Leiste zu filtern. Deshalb habe ich versucht, das Skript LocationbarCharacters.uc.js wieder zum Laufen zu kriegen, das schon lange nicht mehr funktioniert.
Ich habe es zwar soweit hingekriegt, dass das Untermenü im Kontextmenü der URL-Leiste wieder angezeigt wird, aber das Einfügen der Zeichen beim Klicken auf einen Eintrag im Untermenü funktioniert nicht.
/* LocationbarCharacters.uc.js */
function initLocationBarCharacters() {
// var urlbar = window.document.getElementById("urlbar"),
textBox = window.document.getElementById("urlbar-input-container"),
cxmenu = textBox.getElementsByClassName("textbox-contextmenu"),
cxmenu = cxmenu.item(0)
separator = document.createXULElement("menuseparator"),
menu = document.createXULElement("menu"),
popup = document.createXULElement("menupopup"),
labelArray = [
"* Lesezeichen",
"+ Schlagworte",
"$ Web-Adressen (URLs)",
"# Seitentitel",
"% Aktuell geöffneten Tabs",
"^ Chronik",
"? Eingegebene Seiten"
];
var i;
insertCharacters = function(sym) {
var urlbar = window.document.getElementById("urlbar"),
urlbarInput = window.document.getElementById("urlbar-input"),
urlbarText = urlbarInput.value,
urlbarFocus = window.document.getElementById("Browser:OpenLocation");
// urlbarFocus = window.document.getElementById("focusURLBar");
var pos;
urlbarFocus.doCommand();
if (urlbarText.length === 0) {
urlbarText = sym + " ";
} else if (urlbarText.slice(-1) === " ") {
urlbarText = urlbarText + sym + " ";
} else {
urlbarText = urlbarText + " " + sym + " ";
}
urlbar.value = urlbarText;
pos = urlbarText.length;
alert (urlbarText);
alert (urlbarText.length);
urlbar.setSelectionRange(pos, pos);
},
makeMenuItem = function(label) {
var sym = label.slice(0, 1),
node = document.createXULElement("menuitem");
node.setAttribute("label", label);
node.addEventListener("command", function() { insertCharacters(sym); }, false);
popup.appendChild(node);
};
menu.setAttribute("label", "Einfügen (* + $ # % ^ ? )" );
menu.appendChild(popup);
for (i = 0; i < labelArray.length; i += 1) {
makeMenuItem(labelArray[i]);
}
cxmenu.appendChild(separator);
cxmenu.appendChild(menu);
}
initLocationBarCharacters();
Alles anzeigen
In Zeile 41 und 42 habe ich alert-Kommandos eingefügt, um zu prüfen, ob die Werte stimmen, und die sind OK, werden aber nicht in die URL-Leiste eingefügt, die bleibt unverändert.
In der Browser-Konsole bekomme ich die Fehlermeldung "urlbar.setSelectionRange is not a function" (s. Zeile 43). Ich habe es auch mit der Funktion setRangeText versucht, gleiche Fehlermeldung. Beide Funktionen sind aber bei Mozilla beschrieben.
Hat jemand eine Idee, was da falsch läuft/noch fehlt?
geht dieses Skript bei mir nicht mehr.
Hatten wir doch vorgestern erst hier
Oh, danke, ich habe nur in diesem Thema gesucht
saveto.uc.js geht nicht mehr
Hallo,
seit kurzem (Fx78?) geht dieses Skript bei mir nicht mehr. Wenn ich auf den "Speichern unter"-Button klicke, passiert nichts, in der Fehlerkonsole erscheint dieser Fehler:
Uncaught TypeError: dialog.mLauncher.saveToDisk is not a function
saveTo file:///F:/Users/bege/AppData/Roaming/Mozilla/Firefox/Profiles/487kit50.Quantum/chrome/JS/saveto.uc.js:76
saveto.uc.js:76:34
// ==UserScript==
// @include chrome://mozapps/content/downloads/unknownContentType.xhtml
// @charset UTF-8
// @version Fx73+
// ==/UserScript==
(function() {
const Cu = Components.utils;
if (!window.FileUtils) Cu.import('resource://gre/modules/FileUtils.jsm');
if (!window.Services) Cu.import('resource://gre/modules/Services.jsm');
setTimeout(function() {
saveTo()
}, 200);
// style sheet
Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService).loadAndRegisterSheet(
Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent('\
\
.dialog-button menupopup {\
background: #F0F0F0 !important; \
border: 1px solid #A0A0A0 !important; \
padding: 0 5px !important; \
} \
.dialog-button menupopup menuitem:hover {\
background-color: -moz-menuhover !important; \
} \
'), null, null),
Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService).AGENT_SHEET
);
function saveTo() {
// Config
var dirArray = [
["F:\\Users\\bege\\Desktop", "Desktop"],
["F:\\Setups\\Dateiverwaltung\\FreeCommander", "FreeCommander"],
["F:\\Eigene Dateien\\PRIVAT\\Finanzen\\Girokonto GLS", "Girokonto GLS"],
["F:\\Eigene Dateien\\PRIVAT\\Finanzen\\Kreditkarte GLS", "Kreditkarte GLS"],
["F:\\Eigene Dateien\\DOWNLOADS", "Downloads"],
["F:\\Eigene Dateien\\DriveOnWeb", "DriveOnWeb"],
["F:\\Eigene Dateien\\Eigene Bilder\\Symbole", "Symbole"],
["F:\\Users\\bege\\AppData\\Roaming\\Mozilla\\Firefox\\icons", "Firefox\\Icons"],
["F:\\Setups\\Internet", "Setups\\Internet"],
["F:\\Setups\\Audio-Video", "Setups\\Audio-Video"],
["F:\\Eigene Dateien\\Eigene Bilder\\aktuelleDownloads", "Bilder"],
["F:\\Eigene Dateien\\Eigene Musik\\aktuelleDownloads", "Musik"],
["F:\\Eigene Dateien\\Eigene Videos\\aktuelleDownloads", "Videos"],
["" + FileUtils.getDir('UChrm', []).path + "", "chrome"],
["" + FileUtils.getDir('UChrm', ['CSS']).path + "", "CSS"],
["" + FileUtils.getDir('UChrm', ['JS']).path + "", "JS"],
["C:\\", "C:"],
["E:\\", "E:"],
["F:\\", "F:"],
// ["G:\\", "G:"],
// ["H:\\", "H:"],
["I:\\", "I:"],
["S:\\", "S:"]
];
let button = document.getElementById("unknownContentType").getButton("cancel");
let saveTo = button.parentNode.insertBefore(document.createXULElement("button"), button);
var saveToMenu = saveTo.appendChild(document.createXULElement("menupopup"));
saveTo.classList.toggle("dialog-button");
saveTo.label = "Speichern unter";
saveTo.type = "menu";
saveToMenu.classList.toggle("menu-iconic");
dirArray.forEach(function(dir) {
var [name, dir] = [dir[1], dir[0]];
var mi = document.createXULElement("menuitem");
var item = saveToMenu.appendChild(mi);
item.setAttribute("label", (name || (dir.match(/[^\\/]+$/) || [dir])[0]));
item.setAttribute("image", "moz-icon:file:///" + dir + "\\");
item.setAttribute("class", "menuitem-iconic");
item.addEventListener("command", function() {
var file = new FileUtils.File(dir.replace(/\\/g, '\\\\') + '\\\\' + (document.getElementById('locationtext') ? document.getElementById('locationtext').value : document.getElementById('location').value));
dialog.mLauncher.saveToDisk(file, 1);
dialog.onCancel = function() {};
close();
});
});
}
}());
Alles anzeigen
Hat sich bei dem Befehl in Zeile 76 etwas geändert?
Ich habe die IDs zugefügt, so funktioniert Endors Code bei mir auch in Thunderbird.
(Achtung, die URLs sind geändert!)
/* Firefox Quantum Symbole für Add-ons-Manager von Endor ************************************************/
/* Angepasst für Thunderbird von bege */
/* https://www.camp-firefox.de/forum/thema/129954-symbole-zu-kontextmen%C3%BCs-mit-javascript-und-css-hinzuf%C3%BCgen/?postID=1137566#post1137566/
/****************************************************************************************/
@-moz-document url-prefix(chrome://mozapps/content/extensions/extensions.xul), url-prefix(about:addons),url-prefix(chrome://mozapps/content/extensions/aboutaddons.html) {
#page-options > panel-list:nth-child(1) > panel-item:nth-child(1)::before, #utils-updateNow::before {
content: '';
display: block;
width: 16px;
height: 16px;
background-image: url('../../../../icons/Bild5.png');
margin-left: 5px;
margin-right: -21px;}
#page-options > panel-list:nth-child(1) > panel-item:nth-child(2)::before, #utils-viewUpdates::before {
content: '';
display: block;
width: 16px;
height: 16px;
background-image: url('../../../../icons/Bild61.png');
margin-left: 5px;
margin-right: -21px;}
#page-options > panel-list:nth-child(1) > panel-item:nth-child(4)::before, #utils-installFromFile::before {
content: '';
display: block;
width: 16px;
height: 16px;
background-image: url('../../../../icons/Bild3.png');
margin-left: 5px;
margin-right: -21px;}
#page-options > panel-list:nth-child(1) > panel-item:nth-child(5)::before, #utils-debugAddons::before {
content: '';
display: block;
width: 16px;
height: 16px;
background-image: url('../../../../icons/Bild66.ico');
margin-left: 5px;
margin-right: -21px;}
#page-options > panel-list:nth-child(1) > panel-item:nth-child(7), #utils-autoUpdateDefault {
fill: transparent !important;}
#page-options > panel-list:nth-child(1) > panel-item:nth-child(7)::before, #utils-autoUpdateDefault::before {
content: '';
display: block;
width: 16px;
height: 16px;
background: url('../../../../icons/check.png') no-repeat !important;
margin-left: 5px;
margin-right: -21px !important;}
#page-options > panel-list:nth-child(1) > panel-item:nth-child(7):not([checked])::before, #utils-autoUpdateDefault[checked="false"]::before {
content: '';
/* content: 'Nicht die';
font-size: 14px;
padding-left: 22px !important;
padding-right: 35px !important;
padding-top: 1px !important;
padding-bottom: 6px !important;
*/
display: block;
width: 16px;
height: 16px;
background: url('../../../../icons/Bild63.png') no-repeat !important;
margin-left: 5px;
margin-right: -21px;}
#page-options > panel-list:nth-child(1) > panel-item:nth-child(8)::before, #utils-resetAddonUpdatesToAutomatic::before {
content: '';
display: block;
width: 16px;
height: 16px;
background-image: url('../../../../icons/Bild64.png');
margin-left: 5px;
margin-right: -21px;}
#page-options > panel-list:nth-child(1) > panel-item:nth-child(10)::before, #manage-shortcuts::before {
content: '';
display: block;
width: 16px;
height: 16px;
background-image: url('../../../../icons/Bild67.png');
margin-left: 5px;
margin-right: -21px;}
Alles anzeigen
Und wenn andere das Problem hätten und es wäre ein Firefox-Fehler, dann wäre das Forum schon voll mit solchen Anfragen.
Das sehe ich auch so. Deshalb ist meine eigentliche Frage damit auch beantwortet. Liegt also irgendwo am Profil.
Danke für eure Bereitschaft zu helfen.
Bitte sei so gut und poste deine Erweiterungen und ggf. die benutzte Sicherheitssoftware.. dann könnte man vielleicht was sagen, so aber sicher nicht!!
Starte als Kurzangriff Firefox im Safe-Mode mit gedrückter UMSCHALT-Taste und schaue auf den Verbrauch. Wenn sich daran nichts ändert, ist Firefox nicht schuld, suche dann im System nach Verbraucher...
Hallo Boersenfeger,
danke für deine Antwort.
Der Fx verbraucht hier bei 4-5 Tabs bis zu 1,5 GB RAM, dafür habe ich vor einiger Zeit ca. 20 Tabs benötigt. Es geht also nicht um einen hohen Gesamt-Speicherverbrauch auf dem System.
Wie schon gesagt habe ich gerade keine Zeit, mit dem Profil zu testen, deshalb meine Frage. Hätte ja sein können, dass andere das auch erleben. Da niemand meine Erfahrung bestätigt, vermute ich, dass es am Profil liegt.
Hallo,
seit einiger Zeit stelle ich beim Fx einen höheren Speicherverbrauch fest. Das ist ungefähr seit dem Update auf 77, kann aber natürlich auch mit jedem Update einer der vielen Erweiterungen zusammenhängen, die ich installiert habe. Da ich z.Zt. nicht die Zeit habe, mit Profilen und Erweiterungen zu testen, hier erstmal die Frage, ob noch jemand diese Erfahrung gemacht und vielleicht schon eine Ursache dafür gefunden hat.
So, jetzt läuft's bei mir. Danke an milupo und Endor . Das Skript von Endor ist eine Kombination aus dem alten und dem neuen Skript, bei den Profil-Ordnern ist es der alte Code. Ich habe es nicht probiert, kann mir aber nicht vorstellen, dass es funktioniert, weil es die Funktion "getPrefDirPath" im neuen Skript gar nicht mehr gibt.
Ein Abschnitt des Codes sieht bei mir so aus:
["F:\\Eigene Dateien\\Eigene Bilder\\aktuelleDownloads", "Bilder"],
["F:\\Eigene Dateien\\Eigene Musik\\aktuelleDownloads", "Musik"],
["F:\\Eigene Dateien\\Eigene Videos\\aktuelleDownloads", "Videos"],
["" + FileUtils.getDir('UChrm', []).path + "", "chrome"],
["" + FileUtils.getDir('UChrm', ['CSS']).path + "", "CSS"],
["" + FileUtils.getDir('UChrm', ['JS']).path + "", "JS"],
["C:\\", "C:"],
["E:\\", "E:"],
["F:\\", "F:"],
["G:\\", "G:"],
["H:\\", "H:"],
["I:\\", "I:"],
["S:\\", "S:"]
];
let button = document.getElementById("unknownContentType").getButton("cancel");
let saveTo = button.parentNode.insertBefore(document.createXULElement("button"), button);
var saveToMenu = saveTo.appendChild(document.createXULElement("menupopup"));
saveTo.classList.toggle("dialog-button");
saveTo.label = "Speichern unter";
Alles anzeigen
CSS und JS sind Unterordner des chrome-Ordners.
Wie schon erwähnt, muss noch "save to" übersetzt werden, hier in der letzten Zeile.
Seit noch nicht allzu langer Zeit (da ich es nicht dauernd nutze, weiß ich nicht, mit welchem Update das losging) geht beim Fx 73.0.1 das Skript saveto.uc.js nicht mehr. Es soll im Download-Dialog eine Liste mir voreingestellten Zielen für den Download zur Auswahl anbieten. Diese Liste kommt nicht mehr. Ich habe gesehen, dass auch der Download-Dialog jetzt die Endung xhtml hat. Obwohl ich das geändert habe, funktioniert das Skript aber trotzdem nicht.
Weiß jemand, woran es liegt?
// ==UserScript==
// @include chrome://mozapps/content/downloads/unknownContentType.xhtml
// @charset UTF-8
// ==/UserScript==
if (location == "chrome://mozapps/content/downloads/unknownContentType.xhtml") {
(function () {
function getQuery(str) {
return document.querySelector(str);
}
function getPrefDirPath(str) {
Components.utils.import("resource://gre/modules/Services.jsm");
var prefDir = Services.dirsvc.get(str, Ci.nsIFile).path;
return prefDir;
}
var dir = [
["" + getPrefDirPath('UChrm') + "", "chrome"],
["" + getPrefDirPath('UChrm') + "\\" + 'JS' + "", "chrome\\JS"],
["" + getPrefDirPath('UChrm') + "\\" + 'CSS' + "", "chrome\\CSS"],
["C:\\", "C:"],
["E:\\", "E:"],
["F:\\", "F:"],
["G:\\", "G:"],
["H:\\", "H:"],
["I:\\", "I:"],
["S:\\", "S:"]
];
var button = document.documentElement.getButton("cancel");
var saveTo = button.parentNode.insertBefore(document.createXULElement("button"), button);
var saveToMenu = saveTo.appendChild(document.createXULElement("menupopup"));
saveTo.className = "dialog-button";
saveTo.label = "Speichern auf";
saveTo.type = "menu";
dir.map(function (dir) {
var converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Ci.nsIScriptableUnicodeConverter);
converter.charset = "UTF-8";
var name = converter.ConvertToUnicode(dir[1]);
dir = converter.ConvertToUnicode(dir[0]);
var item = saveToMenu.appendChild(document.createXULElement("menuitem"));
item.setAttribute("label", (name||(dir.match(/[^\\/]+$/) || [dir])[0]));
item.setAttribute("image", "moz-icon:file:///" + dir + "\\");
item.setAttribute("class", "menuitem-iconic");
item.setAttribute("oncommand", 'var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile); file.initWithPath("' + dir.replace(/\\/g, "\\\\") + "\\\\" + (getQuery("#locationtext") ? getQuery("#locationtext").value : getQuery("#location").value) + '"); dialog.mLauncher.saveToDisk(file,1); dialog.onCancel = function() {}; close();');
});
})();
}
Alles anzeigen
Die Symbole im Untermenü Web-Entwickler anzeigen zu lassen, ist anscheinend mit einem einfacheren Code als dem aus #36 möglich.
Bitte teste:
Funktioniert Dankeschön