- Firefox-Version
- Firefox 115.0.1
- Betriebssystem
- Windows11 x64
Das nachfolgende Script öffnet nach jedem Download das Popup-Menü des Download-Button. Kann das Script ergänzt werden, dass es nach 10sec. (auswählbar) automatisch wieder schließt.
Das nachfolgende Script öffnet nach jedem Download das Popup-Menü des Download-Button. Kann das Script ergänzt werden, dass es nach 10sec. (auswählbar) automatisch wieder schließt.
dass es nach 10sec. (auswählbar) automatisch wieder schließt.
Das wird wohl etwas aufwendiger sein denke ich
Das Popup darf sich ja erst schließen, wenn der Download beendet ist, und nicht einfach nur nach einer festgelegten Zeit.
Evtl. fällt ja BrokenHeart etwas dazu ein, wenn er sich vom gestriegen Stress mit dem anderen Skript, etwas erholt hat
Das wird wohl etwas aufwendiger sein denke ich
Sei gegrüßt, Andreas!
aborix hat für das Löschen der Searchbar ein Script verfasst, das damit beginnt setTimeout(function() {.
Nun habe ich schon daran gebastelt, aber dazu reichen meine Fähigkeiten nun doch nicht aus.
wenn er sich vom gestriegen Stress mit dem anderen Skript, etwas erholt hat
Auch ich hoffe, dass er sich erholt davon, aber er hat nicht aufgegeben. Prima!
das löschen der Searchbar ein Script verfasst
Dafür reicht ja auch eine festgelegte Zeit.
Aber bei einem Download muss der ja erst beendet sein, und sich dann das Popup schließen.
Ok, bei meinem Anschluss würden 10 Sek. reichen, dann ist hier jeder Download beendet
Evtl. fällt ja BrokenHeart etwas dazu ein, wenn er sich vom gestriegen Stress mit dem anderen Skript, etwas erholt hat
Auch ich hoffe, dass er sich erholt davon, aber er hat nicht aufgegeben. Prima!
Ja, danke der Nachfrage! Eine Hopfenkaltschale hat dann noch für einen erholsamen Schlaf gesorgt...
Aber bei einem Download muss der ja erst beendet sein, und sich dann das Popup schließen.
Richtig und vor allem muss auch solange gewartet werden, bis ALLE Downloads abgeschlossen/beendet sind.
Die ganze Materie ist wirklich kompliziert (für mich!), da man es hier mit "verketteten Versprechungen bei asynchronen Callbacks" zu tun hat
. Da das wirklich harter Stoff ist (für mich!), habe ich mir die Teile, welche ich für notwendig erachtet habe, aus anderen Quellen "zusammengesucht". Aber es funktioniert (hoffe ich!)...
Das Skript wird zusätzlich ausgeführt, ersetzt also nicht das DownloadFenster-Skript.
Bitte wirklich gut testen, bevor man es dauerhaft einsetzt...
(function() {
const closePanelAfter = 5000; //Zeit in ms bis Downloadpanel sich wieder schließt
if (!window.gBrowser){
return;
}
var DownloadStopped = {
_summary: null,
init: function() {
if (!this._summary) {
Downloads.getSummary(Downloads.ALL).then(summary => {
this._summary = summary;
return this._summary.addView(this);
}).then(null, console.error);
}
window.addEventListener("unload", this, false);
},
uninit: function() {
window.removeEventListener("unload", this, false);
if (this._summary) {
this._summary.removeView(this);
}
},
handleEvent: function(event) {
switch (event.type) {
case "unload":
this.uninit();
break;
}
},
onSummaryChanged: function () {
ChromeUtils.import("resource://gre/modules/Services.jsm");
if (!this._summary)
return;
if (this._summary.allHaveStopped) {
let downloadspanel = document.getElementById('downloadsPanel');
setTimeout(function()
{
downloadspanel.hidePopup();
}, closePanelAfter );
}
},
}
DownloadStopped.init();
})();
Alles anzeigen
Aber es funktioniert (hoffe ich!)...
Alle Achtung, das funktioniert einwandfrei
Ich habe jetzt mehrere Downloads gleichzeitig gemacht, es wurde erst nach Ende vom letzten Download das Popup geschlossen
Ich habe beide Skripte in eine Datei dazu gepackt:
//Author @aborix
(function() {
if (window.__SSi != 'window0')
return;
Downloads.getList(Downloads.ALL)
.then(list => list.addView(
{ onDownloadAdded: () =>
Services.wm.getMostRecentBrowserWindow().document.getElementById('downloads-button').click()
}
));
})();
//Author @BrokenHeart
(function() {
const closePanelAfter = 5000; //Zeit in ms bis Downloadpanel sich wieder schließt
if (!window.gBrowser){
return;
}
var DownloadStopped = {
_summary: null,
init: function() {
if (!this._summary) {
Downloads.getSummary(Downloads.ALL).then(summary => {
this._summary = summary;
return this._summary.addView(this);
}).then(null, console.error);
}
window.addEventListener("unload", this, false);
},
uninit: function() {
window.removeEventListener("unload", this, false);
if (this._summary) {
this._summary.removeView(this);
}
},
handleEvent: function(event) {
switch (event.type) {
case "unload":
this.uninit();
break;
}
},
onSummaryChanged: function () {
ChromeUtils.import("resource://gre/modules/Services.jsm");
if (!this._summary)
return;
if (this._summary.allHaveStopped) {
let downloadspanel = document.getElementById('downloadsPanel');
setTimeout(function()
{
downloadspanel.hidePopup();
}, closePanelAfter );
}
},
}
DownloadStopped.init();
})();
Alles anzeigen
Ganz herzlichen Dank für deine Zeit, Mühe und Hilfe
Eine Hopfenkaltschale
Wieviele kann ich davon spenden. Also, da bin ich total überrascht, und muss staunen, was da für Arbeit drin steckt.
Meine Hochachtung, das Script macht seine Arbeit tadellos.
Ganz herzlichen Dank dafür!
Für das Popup-Menü stelle ich hier mal meine Version zur Verfügung.
@-moz-document url(chrome://browser/content/browser.xhtml){
/* Popup-Menü anpassen */
#downloadsPanel-multiView #downloadsPanel-mainView {
min-width: 50em !important;
max-width: 50em !important;
background-color: #D5D2D9 !important;
padding: 10px !important;
border: 3px solid dodgerblue !important;
}
/*Popup Höhe ab wann Scrollbar erscheint*/
#downloadsListBox {
max-height: auto !important;
overflow-y: auto !important;
}
/* Keine Downloads in dieser Sitzung mittig */
.panel-view-body-unscrollable {
display: grid !important;
justify-items: safe center !important;
justify-content: safe center !important;
}
/* Keine Downloads in dieser Sitzung / Icon */
#emptyDownloads {
appearance: none !important;
background: url("file:///C:/FoxIcons/0011.png") no-repeat !important;
background-position: 0px 23px !important;
background-size: 22px 22px !important;
padding-left: 40px !important;
color: red !important;
font-weight: bold !important;
font-size: 15px !important;
}
/* Button "Alle Downloads anzeigen" */
#downloadsFooterButtons button#downloadsHistory.downloadsPanelFooterButton{
width: 47.7em !important;
margin-top: 6px !important;
background: lightblue !important;
border: 2px solid #007aa5 !important;
border-radius: 0 !important;
}
#downloadsFooterButtons button#downloadsHistory.downloadsPanelFooterButton:hover{
background: lightyellow !important;
border: 2px solid green !important;
}
/*Alle Downloads anzeigen / Text und Icon */
#downloadsFooterButtons button#downloadsHistory.downloadsPanelFooterButton hbox.box-inherit.button-box label.button-text {
background: url("file:///C:/FoxIcons/computer24.png") no-repeat !important;
background-position: 0px -5px !important;
padding-left: 40px !important;
background-size: 24px 24px !important;
}
/* Alle Downloads anzeigen / Text */
#downloadsFooterButtons button#downloadsHistory.downloadsPanelFooterButton hbox.box-inherit.button-box label.button-text {
margin-left: 175px !important;
color: blue !important;
font-size: 14px !important;
font-weight: 600 !important;
}
#downloadsFooterButtons button#downloadsHistory.downloadsPanelFooterButton:hover hbox.box-inherit.button-box label.button-text {
color: brown !important;
}
/* Download-Liste */
#downloadsListBox {
width: 47.7em !important;
background: beige !important;
/* color: black !important; */
padding: 0px 0px 0 10px !important;
border: 1px solid grey !important;
}
richlistitem.download-state > hbox> vbox {
background: #f0f8ff !important;
outline: inset 1px !important;
outline-color: green !important;
margin-left: 10px !important;
margin-right: 10px !important;
padding-left: 10px !important;
height: 50px !important;
}
richlistitem.download-state > hbox> vbox:hover {
background: lightyellow !important;
}
/* unten Border in der Download-Liste */
#downloadsListBox richlistitem.download-state{
border-bottom: 1px solid grey !important;
border-radius: 0 !important;
margin-left: -9px !important;
margin-top: 0px !important;
margin-bottom: 0px !important;
padding: 0 0px 0 15px !important;
}
/* Name des Downloads in der Liste */
.downloadTarget {
color: blue !important;
font-size: 16px !important;
font-weight: 600 !important;
}
/*die Details darunter / Textfarbe*/
.downloadDetails.downloadDetails {
font-size: 13px !important;
color: red !important;
font-weight: 600 !important;
opacity: 1 !important;
}
/* rechts Button "In Ordner anzeigen" */
#downloadsPanel-mainView vbox.panel-view-body-unscrollable richlistbox#downloadsListBox richlistitem.download-state button.downloadButton{
border: 1px solid grey !important;
border-radius: 0 !important;
background-color: #79443b !important;
margin-right: 15px !important;
}
#downloadsPanel-mainView vbox.panel-view-body-unscrollable richlistbox#downloadsListBox richlistitem.download-state button.downloadButton:hover{
border: 1px solid green !important;
background-color: #ffe4b5 !important;
/* fill: blue !important; */
}
.downloadIconShow > .button-box > .button-icon {
fill: yellow !important;
}
.downloadIconShow:hover > .button-box > .button-icon {
fill: red !important;
}
}
Alles anzeigen
Alle Achtung, das funktioniert einwandfrei
Ja, sieht erst mal so ganz "funktionstüchtig" aus...
Ich habe beide Skripte in eine Datei dazu gepackt:
Wieviele kann ich davon spenden.
"Spendier" dir doch einfach selbst so ein kühles 🍺 oder 🍻 - Prost!
Ich habe noch den 'unload' Event aus dem Code entfernt, da er eh nicht aufgerufen wird:
//Author @aborix
(function() {
if (window.__SSi != 'window0')
return;
Downloads.getList(Downloads.ALL)
.then(list => list.addView(
{ onDownloadAdded: () =>
Services.wm.getMostRecentBrowserWindow().document.getElementById('downloads-button').click()
}
));
})();
//Author @BrokenHeart
(function() {
const closePanelAfter = 5000; //Zeit in ms bis Downloadpanel sich wieder schließt
if (!window.gBrowser){
return;
}
var DownloadStopped = {
_summary: null,
init: function() {
if (!this._summary) {
Downloads.getSummary(Downloads.ALL).then(summary => {
this._summary = summary;
return this._summary.addView(this);
}).then(null, console.error);
}
},
onSummaryChanged: function () {
ChromeUtils.import("resource://gre/modules/Services.jsm");
if (!this._summary)
return;
if (this._summary.allHaveStopped) {
let downloadspanel = document.getElementById('downloadsPanel');
setTimeout(function()
{
downloadspanel.hidePopup();
}, closePanelAfter );
}
},
}
DownloadStopped.init();
})();
Alles anzeigen
Ich habe noch den 'unload' Event aus dem Code entfernt, da er eh nicht aufgerufen wird:
Danke, auch das arbeitet tadellos.
"Spendier" dir doch einfach selbst so ein kühles 🍺 oder 🍻 - Prost!
Wird gemacht, heute am Abend, im Schatten der Bäume.
Ich habe noch den 'unload' Event aus dem Code entfernt
Guten Morgen BrokenHeart ..
auch das Skript funktioniert hier einwandfrei
Auch dafür also vielen Dank.