Hallo
Ist es möglich einen Warnhinweis beim Schließen von Firefox mit einem geöffneten Tab auszugeben ?
Habe schon Netz durchforstet ... aber leider nichts greifbares gefunden.
Gruss Lidux
Bearbeitet von umbhaki:
Titel präzisiert.
Anmeldungsdatum: Beiträge: 16658 |
Hallo Ist es möglich einen Warnhinweis beim Schließen von Firefox mit einem geöffneten Tab auszugeben ? Habe schon Netz durchforstet ... aber leider nichts greifbares gefunden. Gruss Lidux Bearbeitet von umbhaki: Titel präzisiert. |
Anmeldungsdatum: Beiträge: 11720 |
In user.js (nicht prefs.js) füge ein bzw. erstelle ein solches File mit folgendem Inhalt: # Mozilla User Preferences user_pref("browser.warnOnQuit", true); user_pref("browser.tabs.warnOnClose", true); user_pref("browser.tabs.warnOnCloseOtherTabs", true); user_pref("browser.tabs.closeWindowWithLastTab", false); Die ersten drei Zeilen sind default auf true. Damit wird gewarnt, wenn versucht wird, über Fx-close-Button bei mehr als einem Tab zu schließen. Die vierte Zeile ist default auf true. Bei false wird der letzte offene Tab über dessen close-Button geschlossen, aber ein neuer leerer geöffnet, d.h., Fx bleibt offen. ! Ein sinnvoller Betreff wäre nicht zuviel verlangt gewesen. |
(Themenstarter)
Anmeldungsdatum: Beiträge: 16658 |
Hallo von.wert, Vielen Dank für deine Antwort. Den von dir gemachten Vorschlag hatte ich schon über die about:config realisiert. Mit der Tastenkombination Strg+Q erscheint auch das Hinweisfeld zum Abbrechen/Schließen des Browser. Nur eben nicht mit dem X Button in der rechten oberen Ecke, wo ich dieses Verhalten haben möchte ..... PS: Habe mal über das Melde-Button um Hilfe gebeten zu einem aussagekräftigen Titel. Gruss Lidux |
Anmeldungsdatum: Beiträge: 11720 |
|
Anmeldungsdatum: Beiträge: 4369 |
Das geht mit dem beforeunload-Ereignis:
https://developer.mozilla.org/de/docs/Web/API/Window/beforeunload_event Keine Ahnung, ob man mit Erweiterungen wie Greasemonkey das in jede aufgerufene Website bekommt. |
(Themenstarter)
Anmeldungsdatum: Beiträge: 16658 |
Hallo, Habe ein Schnipsel in JS gefunden. (function() { if (window.__SSi != 'window0') return; const { BrowserGlue } = ChromeUtils.import('resource:///modules/BrowserGlue.jsm'); BrowserGlue.prototype._onQuitRequest = function BG__onQuitRequest(aCancelQuit, aQuitType) { // If user has already dismissed quit request, then do nothing if (aCancelQuit instanceof Ci.nsISupportsPRBool && aCancelQuit.data) { return; } // There are several cases where we won't show a dialog here: // 1. There is only 1 tab open in 1 window // 2. browser.warnOnQuit == false // 3. The browser is currently in Private Browsing mode // 4. The browser will be restarted. // 5. The user has automatic session restore enabled and // browser.sessionstore.warnOnQuit is not set to true. // 6. The user doesn't have automatic session restore enabled // and browser.tabs.warnOnClose is not set to true. // // Otherwise, we will show the "closing multiple tabs" dialog. // // aQuitType == "lastwindow" is overloaded. "lastwindow" is used to indicate // "the last window is closing but we're not quitting (a non-browser window is open)" // and also "we're quitting by closing the last window". if (aQuitType == "restart" || aQuitType == "os-restart") { return; } // browser.warnOnQuit is a hidden global boolean to override all quit prompts. if (!Services.prefs.getBoolPref("browser.warnOnQuit")) { return; } var windowcount = 0; var pagecount = 0; let pinnedcount = 0; for (let win of BrowserWindowTracker.orderedWindows) { if (win.closed) { continue; } windowcount++; let tabbrowser = win.gBrowser; if (tabbrowser) { pinnedcount += tabbrowser._numPinnedTabs; pagecount += tabbrowser.browsers.length - tabbrowser._numPinnedTabs - tabbrowser._removingTabs.length; } } // No windows open so no need for a warning. if (!windowcount) { return; } // browser.warnOnQuitShortcut is checked when quitting using the shortcut key. // The warning will appear even when only one window/tab is open. For other // methods of quitting, the warning only appears when there is more than one // window or tab open. let shouldWarnForShortcut = this._quitSource == "shortcut" && Services.prefs.getBoolPref("browser.warnOnQuitShortcut"); let shouldWarnForTabs = //pagecount >= 2 && Services.prefs.getBoolPref("browser.tabs.warnOnClose"); pagecount >= 1 && Services.prefs.getBoolPref("browser.tabs.warnOnClose"); if (!shouldWarnForTabs && !shouldWarnForShortcut) { return; } if (!aQuitType) { aQuitType = "quit"; } let win = BrowserWindowTracker.getTopWindow(); // Our prompt for quitting is most important, so replace others. win.gDialogBox.replaceDialogIfOpen(); let title, buttonLabel; // More than 1 window. Compose our own message. const gTabbrowserBundle = gTabBrowserBundle; if (windowcount > 1) { title = gTabbrowserBundle.GetStringFromName("tabs.closeWindowsTitle"); title = PluralForm.get(windowcount, title).replace(/#1/, windowcount); buttonLabel = AppConstants.platform == "win" ? "tabs.closeWindowsButtonWin" : "tabs.closeWindowsButton"; buttonLabel = gTabbrowserBundle.GetStringFromName(buttonLabel); } else if (shouldWarnForShortcut) { let productName = gBrandBundle.GetStringFromName("brandShorterName"); title = gTabbrowserBundle.formatStringFromName( "tabs.closeTabsWithKeyTitle", [productName] ); buttonLabel = gTabbrowserBundle.formatStringFromName( "tabs.closeTabsWithKeyButton", [productName] ); } else { title = gTabbrowserBundle.GetStringFromName("tabs.closeTabsTitle"); title = PluralForm.get(pagecount, title).replace("#1", pagecount); buttonLabel = gTabbrowserBundle.GetStringFromName( "tabs.closeButtonMultiple" ); } // The checkbox label is different depending on whether the shortcut // was used to quit or not. let checkboxLabel; if (shouldWarnForShortcut) { let quitKeyElement = win.document.getElementById("key_quitApplication"); let quitKey = ShortcutUtils.prettifyShortcut(quitKeyElement); checkboxLabel = gTabbrowserBundle.formatStringFromName( "tabs.closeTabsWithKeyConfirmCheckbox", [quitKey] ); } else { checkboxLabel = gTabbrowserBundle.GetStringFromName( "tabs.closeTabsConfirmCheckbox" ); } let warnOnClose = { value: true }; let flags = Services.prompt.BUTTON_TITLE_IS_STRING * Services.prompt.BUTTON_POS_0 + Services.prompt.BUTTON_TITLE_CANCEL * Services.prompt.BUTTON_POS_1; // buttonPressed will be 0 for closing, 1 for cancel (don't close/quit) let buttonPressed; if (pagecount < 2) { let url = win.gBrowser.currentURI.spec; if (url == 'about:newtab' || url == 'about:home') { return; } else { buttonPressed = Services.prompt.confirmEx( win, "Tab und Firefox schließen?", "Bestätigen, bevor Firefox geschlossen wird", flags, "Firefox schließen", null, null, null, warnOnClose ); } } else { //let buttonPressed = Services.prompt.confirmEx( buttonPressed = Services.prompt.confirmEx( win, title, null, flags, buttonLabel, null, null, checkboxLabel, warnOnClose ); } Services.telemetry.setEventRecordingEnabled("close_tab_warning", true); let warnCheckbox = warnOnClose.value ? "checked" : "unchecked"; let sessionWillBeRestored = Services.prefs.getIntPref("browser.startup.page") == 3 || Services.prefs.getBoolPref("browser.sessionstore.resume_session_once"); Services.telemetry.recordEvent( "close_tab_warning", "shown", "application", null, { source: this._quitSource, button: buttonPressed == 0 ? "close" : "cancel", warn_checkbox: warnCheckbox, closing_wins: "" + windowcount, closing_tabs: "" + (pagecount + pinnedcount), will_restore: sessionWillBeRestored ? "yes" : "no", } ); // If the user has unticked the box, and has confirmed closing, stop showing // the warning. if (buttonPressed == 0 && !warnOnClose.value) { if (shouldWarnForShortcut) { Services.prefs.setBoolPref("browser.warnOnQuitShortcut", false); } else { Services.prefs.setBoolPref("browser.tabs.warnOnClose", false); } } this._quitSource = "unknown"; aCancelQuit.data = buttonPressed != 0; } })(); sollte funktionieren, d.h. wo müßte die Datei hin und wie eingebunden werden ? Gruss Lidux |