Das hatte ich ja oben auch schon vermutet:
Ich kann aber aus einer css-Datei keine js-Datei machen.
Meines Wissens beherbegen js-Dateien Funktionen während css-Dateien nur vorhandenes anpassen können.
Das hatte ich ja oben auch schon vermutet:
Ich kann aber aus einer css-Datei keine js-Datei machen.
Meines Wissens beherbegen js-Dateien Funktionen während css-Dateien nur vorhandenes anpassen können.
Wenn du mir sagst, wie ich aus einer css-Datei eine js-Datei mache, dann werde ich das gerne versuchen.
Ich mache all das selbst, was ich machen kann.
Ich kann aber aus einer css-Datei keine js-Datei machen.
Meines Wissens beherbegen js-Dateien Funktionen während css-Dateien nur vorhandenes anpassen können.
Es scheint ja aber auch so schon mal prinzipiell in die richtige Richtung zu gehen, denn in die Statusleiste habe ich die Progressbar ja schon mal bekommen.
Nur wie ich die Position anpassen kann oder die Streifen wegbekomme, das weiß ich nicht.
Und ja, hätte ich große Ahnung von diesen Dingen, würde ich gar nicht erst fragen sondern es einfach alles selbst machen, schon klar.
Update:
Aber vllt. ist das alles sowieso nicht nötig, denn wie ich gerade festgestellt habe, wird beim Laden der Youtube-Seite überhaupt kein Fortschritt angezeigt oder wenn überhaupt dann nur ganz zum Schluss (obwohl natürlich einiges geladen wird).
Das ganze soll aber nicht nur ein Gimmick sein, sondern den tatsächlichen Ladefortschritt grafisch darstellen.
ODER es wird nur dann etwas angezeigt, wenn etwas direkt aus dem Internet geladen wird, nicht wenn es aus dem Cache geladen wird?
Ich weiß es nicht...
Wenn das nicht geht, dann kann ich damit leben.
Ich hab's jetzt zwar in die Statusbar bekommen, allerdings nimmt die Progress bar jetzt die gesamte Statusbar ein, es sollte aber nur ein kleiner Teil rechts sein (die Streifen brauche ich übrigens auch nicht).
/* LoadingBar.uc.js */
// Location Bar Enhancer5.1; Loading Bar0.3.0
// Firefox 87+
(function(){
var cssStr = `
#statuspanel {
background-image: repeating-linear-gradient(-45deg, rgba(0,0,128,0), rgba(0,0,128,0) 6px, rgba(0,0,128,1) 6px, rgba(0,0,128,1) 12px), linear-gradient(to left, rgba(0,0,128) 0%, rgba(0,0,128,.7) 100%);
background-size:0 0;
background-repeat:repeat-x, no-repeat;
transition: background-size 350ms ease 0s;
}
#statuspanel:not([style="background-size: 0% 100%;"]) {
animation: progress-bar-stripes 2s linear infinite;
}
@keyframes progress-bar-stripes {
from {
background-position: 0 0;
}
to {
background-position: 51x 0;
}
}
`.replace(/\s{2,}|\r|\n/,"");
var style = document.createProcessingInstruction("xml-stylesheet", "type=\"text/css\"" + " href=\"data:text/css;base64," + btoa(cssStr) + "\"");
var mainW = document.getElementById("main-window");
document.insertBefore(style, mainW);
function main(window) {
var {document, gBrowser} = window;
function $(id) { return document.getElementById(id) };
var urlbar = $("statuspanel");
let pageProgress = 0;
let async = makeWindowHelpers(window).async;
var LoadingBar = {
listener: {
onChangeTab: function(e) {
urlbar.style.backgroundSize = '0% 100%';
pageProgress = 0;
},
onProgressChange: function(aBrowser,webProgress,request,curSelfProgress,maxSelfProgress,curTotalProgress,maxTotalProgress) {
if (gBrowser.contentDocument === aBrowser.contentDocument) {
var val = (curTotalProgress-1)/(maxTotalProgress-1);
pageProgress = val;
urlbar.style.backgroundSize = (100*val) + '% 100%';
if (val > 0.9)
async(function() {
if (pageProgress > 0.95)
urlbar.style.backgroundSize = '100% 100%';
}, 1000);
}
},
onStateChange: function() {
if (pageProgress > 0.95){
async(function() {
urlbar.style.backgroundSize = '0% 100%';
pageProgress = 0;
}, 1000);
}else{
urlbar.style.backgroundSize = '0% 100%';
}
}
}
};
gBrowser.tabContainer.addEventListener('TabSelect',LoadingBar.listener.onChangeTab,false);
gBrowser.addTabsProgressListener(LoadingBar.listener);
unload(function() {
gBrowser.tabContainer.removeEventListener('TabSelect',LoadingBar.listener.onChangeTab,false);
gBrowser.removeTabsProgressListener(LoadingBar.listener);
}, window);
}
watchWindows(main, "navigator:browser");
function runOnLoad(window, callback, winType) {
window.addEventListener("load", function() {
window.removeEventListener("load", arguments.callee, false);
if (window.document.documentElement.getAttribute("windowtype") == winType)
callback(window);
}, false);
}
function runOnWindows(callback, winType) {
function watcher(window) {
try {
callback(window);
}
catch(ex) {}
}
let browserWindows = Services.wm.getEnumerator(winType);
while (browserWindows.hasMoreElements()) {
let browserWindow = browserWindows.getNext();
if (browserWindow.document.readyState == "complete")
watcher(browserWindow);
else
runOnLoad(browserWindow, watcher, winType);
}
}
function watchWindows(callback, winType) {
function watcher(window) {
try {
callback(window);
}
catch(ex) {}
}
runOnWindows(callback, winType);
function windowWatcher(subject, topic) {
if (topic == "domwindowopened")
runOnLoad(subject, watcher, winType);
}
Services.ww.registerNotification(windowWatcher);
unload(function() { Services.ww.unregisterNotification(windowWatcher) });
}
function unload(callback, container) {
let unloaders = unload.unloaders;
if (unloaders == null)
unloaders = unload.unloaders = [];
if (callback == null) {
unloaders.slice().forEach(function(unloader) { unloader() });
unloaders.length = 0;
return null;
}
if (container != null) {
container.addEventListener("unload", removeUnloader, false);
let origCallback = callback;
callback = function() {
container.removeEventListener("unload", removeUnloader, false);
origCallback();
}
}
function unloader() {
try {
callback();
}
catch(ex) {}
}
unloaders.push(unloader);
function removeUnloader() {
let index = unloaders.indexOf(unloader);
if (index != -1)
unloaders.splice(index, 1);
}
return removeUnloader;
}
function makeWindowHelpers(window) {
let {clearTimeout, setTimeout} = window;
function async(callback, delay) {
delay = delay || 0;
let timer = setTimeout(function() {
stopTimer();
callback();
}, delay);
function stopTimer() {
if (timer == null)
return;
clearTimeout(timer);
timer = null;
}
}
return {
async: async,
};
}
})();
Alles anzeigen
Scheint zu funktionieren.
Die Frage ist nur wie ich das in angepasster Form nun in ein kleines "Fenster" in der Statusleiste bekomme.
Nur zur Erinnerung, so sah das einmal aus: Dort wo "1 Fehler" steht wäre dann der blaue Fortschrittsbalken:
Soll eine Lade-Anzeige in der Url-bar sein?
Selbst bei leerem Chrome-Ordner (nur mit der userchrome.js und dem Script oben) sehe ich da irgendwie nichts.
Danke, aber darum geht's nicht.
Es geht nicht um den Fortschritt von Downloads sondern um den Fortschritt des Ladens einer Webseite.
Ich glaube zwar nicht, dass das in sinnvoller Weise umsetzbar ist aber ich frage einfach mal:
Manche kennen sicher noch die Fortschrittsanzeige die es mal in der Statusleiste gab (ja, die Statusleiste gibt es in dem Sinne auch nicht mehr, dazu später mehr).
Dazu meine Frage: Ist es möglich so etwas wieder zu basteln?
Es gibt ein Addon, welches etwas ähnliches macht (nur halt nicht in der Statusleiste):
https://addons.mozilla.org/de/firefox/add…d-progress-bar/
Allerdings ist das nicht sehr zufriedenstellend, da die Leiste erst angezeigt wird, wenn die Seite schon fast geladen ist, die gesamte Ladezeit über ist diese Leiste also gar nicht zu sehen (es müsste also ein anderer Code sein).
Da es ja die Statusleiste auch nicht mehr gibt, habe ich dazu ein css Script gefunden, da sollte diese Fortschrittsanzeige also dann angezeigt werden:
/* Firefox Quantum userChrome.css tweaks ************************************************/
/* Github: https://github.com/aris-t2/customcssforfx ************************************/
/****************************************************************************************/
:root {
--statusbar_background_color: grey;
--statusbar_font_color: black;
}
:-moz-any(statuspanel,#statuspanel) {
-moz-appearance: none !important;
background-color: unset !important;
width: unset !important
border: 0 !important;
}
#browser-bottombox {
height: 22px;
border: 0px solid transparent !important;
border-right: 1px solid transparent !important;
box-shadow: 0 2px #c0c0c0 inset, 1px 3px #505050 inset, -1px -1px #fff inset !important;
padding-top: 1px !important;
}
#statuspanel {
height: 18px !important;
left: 0px !important;
width: 100% !important;
bottom: 1px !important;
padding-left: 3px !important;
padding-top: 1px !important;
padding-bottom: 2px !important;
transition-duration: 0s !important;
transition-delay: 0s !important;
transition-property: none !important;
/*box-shadow: 1px 1px #505050 inset, -1px -1px #fff inset !important;*/
}
#statuspanel-inner {
font-size: 12pt !important;
height: 14px !important;
}
#statuspanel-label {
border: none !important;
padding: 0px !important;
background: transparent !important;
}
html[inFullscreen="true"] #browser-bottombox {
display:none !important;
}
html[inFullscreen="true"] #statuspanel {}
#status-bar {
background: transparent !important;
height: 22px;
margin-top: -3px;
}
Alles anzeigen
Wie gesagt, ich glaube eigentlich nicht, dass das gehen wird aber fragen kostet ja nichts (und natürlich könnte ich wirklich sehr gut verstehen wenn sich niemand die Mühe machen will, so etwas nachzubasteln).
Die Annahme, dass etwas gemacht worden wäre, was wirklich niemand oder fast niemand wollte, ergibt jedenfalls keinen Sinn. Keine Änderung wird ohne Grund durchgeführt.
Das was du geschrieben hast, klingt fast so, als ob Entwickler und/oder Produktmanager immer nur richtige Entscheidungen treffen würden.
Natürlich wird niemand bewusst Entscheidungen treffen, die dem Großteil der Anwender misfällt, das wäre ja Irrsinn.
Und dennoch besteht natürlich immer die Gefahr, dass man sich verzettelt und Entscheidungen trifft, die abgelehnt werden. Von vielen.
Zum Thema:
Ich glaube die Festlegung des Temp-Ordners als Standard-Downloadspeicherort ist eigentlich eh die Lösung des Problems, wenn mich nicht alles täuscht.
"Öffnen mit"-Downloads landen dann wie bisher im Temp-Ordner und die anderen im jeweiligs angegebenen Ordner.
Die Annahme, dass etwas gemacht worden wäre, was wirklich niemand oder fast niemand wollte, ergibt jedenfalls keinen Sinn.
Natürlich wird nichts gemacht werden, wovon man sich erwarten würde, dass es niemand oder fast niemand will.
Aber sinkende Nutzerzahlen seit Jahren sollten ein Grund für die von dir genannten Produkt-Manager sein mal grundlegend darüber nachzudenken in welche Richtung die Reise für Firefox gehen soll.
Oder anders: Ich halte es schon für möglich, dass Entscheidungen getroffen werden die dann eben zur Abwanderung weiterer Nutzer führen, weil diese Entscheidungen von einem Großteil der Nutzer eben nicht goutiert wird.
Jedenfalls erfolgt im eingestellten temporärern Verzeichnis dann natürlich genauso eine automatische Löschung - wenn diese bereits vor den Änderungen in Firefox 98 in dem Verzeichnis erfolgte. Wenn das mit diesem ausgewählten Verzeichnis nicht funktioniert, wurde auch vor Firefox 98 nichts automatisch gelöscht. Denn das ist eine System-Funktion und kein Verhalten, welches durch Firefox implementiert war.
Es stimmt schon, dass die dort befindliche Datei dann genauso gelöscht wird (oder auch nicht) wie vor Firefox 98.
Allerdings werden standardmäßig Temp-Ordner überhaupt nicht automatisch gelöscht (das ist nicht zu verwechseln mit der Option "Datenträgerbereinigung" die zwar diese Temp-Ordner tatsächlich leert, allerdings eben nur wenn man die Funktion bewusst ausführt oder automatisiert hat).
Ab einer best. Windows 10-Version gibt es wohl tatsächlich die Option Temp-Ordner automatisch von Windows löschen zu lassen (nachdem die Dateien seit 30 Tagen dort unbenutzt herumlagen). Diese Option ist aber standardmäßig deaktiviert, wie ich gelesen habe.
Aber wie gesagt, das betrifft dann sowieso Firefox-Versionen VOR als auch NACH Version 98.
Nicht beim klassischen Theme.
Außerdem halt nicht in Prozent.
ICH bin jetzt wunschlos glücklich!
Wie gesagt, wichtig ist, dass es irgendwo angezeigt wird, ob es nun die eine oder die andere Titelleiste ist, ist mir egal (solange diese Titelleiste automatisch sichtbar ist und das ist ja bei der Titelleiste von Firefox selbst der Fall Immer.)
In gewisser Weise ist es ja sogar gut, wenn es auch (und immer) in der Titelleiste angezeigt wird, denn dann kann man den Download-Fortschritt immer im Auge behalten, völlig unabhängig davon ob ein zusätzliches Fenster geöffnet ist.
.
Stimmt, aber zuerst bei mir nicht und jetzt auch nicht immer.
Das ist etwas schräg, die Anzeige ist mal im Download-Fenster (und zusätzlich im Hauptfenster und der Bibliothek), dann nur im Hauptfenster und nicht im Download-Fenster, dafür aber immer noch in der Bibliothek und dann wieder überall usw.
(jetzt weiß ich's genauer, beim ERSTEN Download ist es nur in der Titelseite von Firefox selbst, beim ZWEITEN Download dann auch im Downloads-Fenster. Ich hab mal versucht die Scripts umzubenennen, sodass das Downloadsfenster zuerst erzeugt wird und dann erst die Prozentanzeige geladen wird, hat aber nichts gebracht)
Wie auch immer, eigentlich ist mir das egal, Hauptsache es wird in irgendeiner der beiden Titelleisten angezeigt (Download- oder Hauptfenster) und das ist ja der Fall, das ist gut genug für mich.
Also danke wieder an alle Beteiligten!
Exakt so etwas meine ich, ja.
Danke also hierfür!
Nur dass ich das jetzt noch gerne in dem neuen Downloads-Fenster hätte um das es hier geht.
Ich vermute aber mal jemand mit den nötigen Skills wird das bestimmt hinkriegen.
Ok danke, jetzt klappt's.
Gibt es eigentlich noch irgendwo in Firefox eine Prozentanzeige die anzeigt wieviel Prozent der zu herunterladenen Dateien bereits heruntergeladen wurde?
Also ich meine damit, gibt es diese Anzeige noch irgendwo um sie vllt. auch auf einfache(re) Weise in das Downloads-Fenster zu integrieren?
Früher einmal war die Prozentanzeige direkt in der Titelleiste des Fensters, war ganz praktisch, weil so die Prozentanzeige auch zu sehen war, wenn das Fenster minimiert in der Taskleiste war.
.
Dieser Code hier funktioniert unter Firefox 99, nicht aber unter Firefox 91.
Ist das möglich?
Gibt's irgendwas an dem Code was unter Fx91 nicht verstanden wird?
@-moz-document url-prefix("chrome://browser/content/downloads/contentAreaDownloadsView.xhtml"),
url-prefix("chrome://browser/content/places/places.xhtml") {
#downloadsListBox > richlistitem[selected] .downloadDetails {
opacity: 30 !important;
color: white !important;
}
#downloadsListBox > richlistitem[selected] {
background: #000080 !important;
color: white !important;
}
}
Alles anzeigen
Alles anzeigenIch habe keine Ahnung warum fast alles nicht funktioniert bei dir
So sieht das aus:Jupp, verstehe ich auch nicht.
Um das Fenster dann meinen Anpassungen der Bibliothek anzupassen war dann auch gar nicht viel nötig, einfach das * und das ** zusätzlich einfügen und gut war es.
*
, url-prefix("chrome://browser/content/downloads/contentAreaDownloadsView.xhtml")
*
CSS#contentAreaDownloadsView { background-color: #D5D2D9 !important; padding: 10px !important; } #downloadsListBox { border-radius: 0 !important; }
Ergebnis sieht dann so ↓ aus:
So ↓ sieht als Gegenstück die Bibliothek aus:
Wie hast du diese Farben der selektierten Elemente so hinbekommen?
Also nicht nur in dem Downloads-Fenster sondern auch in dem anderen (die grüne Farbe meine ich).
Super, es scheint zu funktionieren!
Also auch von meiner Seite aus herzlichen Dank an alle Beteiligten!