Ergänzend:
Hallo milupo ..
auch dir danke für den Hinweis
Dann wird das in Zukunft wohl auch noch andere Skripte betreffen.
Ergänzend:
Hallo milupo ..
auch dir danke für den Hinweis
Dann wird das in Zukunft wohl auch noch andere Skripte betreffen.
Dann wird das in Zukunft wohl auch noch andere Skripte betreffen.
Denke ich auch. Wenn wir Glück haben, braucht nur der Dateiname geändert zu werden. Leider haben wir hier dieses Glück nicht.
Ja die Umstellung auf .sys.mjs wird einige Scripte betreffen.
Es wird sicher Lösungen dafür geben. Mal abwarten.
Mfg.
Endor
Leider haben wir hier dieses Glück nicht.
Immer fummelt Mozilla an was rum.
Wenn sie dann wenigstens die Skripte auch gleich anpassen würden, aber nein....
Ihr könnt ja mal spaßeshalber die beiden omni.ja durchsuchen, in der omni.ja auf oberster Ebene gibt es bisher nur eine .mjs-Datei, aber in der browser/omni.ja gibt es schon ziemlich viele.
Wenn sie dann wenigstens die Skripte auch gleich anpassen würden, aber nein....
Dann müssten sie wohl aborix hauptberuflich einstellen …
hauptberuflich einstellen
Können sie doch machen.
Und er kann ja dann Homeoffice machen
Der angepasste Import sieht so aus:
//Angepasst durch @aborix
(function() {
if (window.__SSi != 'window0')
return;
const lazy = {};
ChromeUtils.defineESModuleGetters(lazy, {
BrowserGlue: "resource:///modules/BrowserGlue.sys.mjs"
});
lazy.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");
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 titleId, buttonLabelId;
if (windowcount > 1) {
// More than 1 window. Compose our own message.
titleId = {
id: "tabbrowser-confirm-close-windows-title",
args: { windowCount: windowcount },
};
buttonLabelId = "tabbrowser-confirm-close-windows-button";
} else if (shouldWarnForShortcut) {
titleId = "tabbrowser-confirm-close-tabs-with-key-title";
buttonLabelId = "tabbrowser-confirm-close-tabs-with-key-button";
} else {
titleId = {
id: "tabbrowser-confirm-close-tabs-title",
args: { tabCount: pagecount },
};
buttonLabelId = "tabbrowser-confirm-close-tabs-button";
}
// The checkbox label is different depending on whether the shortcut
// was used to quit or not.
let checkboxLabelId;
if (shouldWarnForShortcut) {
const quitKeyElement = win.document.getElementById("key_quitApplication");
const quitKey = ShortcutUtils.prettifyShortcut(quitKeyElement);
checkboxLabelId = {
id: "tabbrowser-confirm-close-tabs-with-key-checkbox",
args: { quitKey },
};
} else {
checkboxLabelId = "tabbrowser-confirm-close-tabs-checkbox";
}
let [
title,
buttonLabel,
checkboxLabel,
] = win.gBrowser.tabLocalization.formatMessagesSync([
titleId,
buttonLabelId,
checkboxLabelId,
]);
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;
// 1 Fenster mit höchstens 1 nicht angehefteter Tab
if (windowcount == 1 && pagecount < 2 && this._quitSource != "shortcut") {
title.value = "Fenster schließen?";
buttonLabel.value = "Schließen";
checkboxLabel.value = null;
}
// buttonPressed will be 0 for closing, 1 for cancel (don't close/quit)
let buttonPressed = Services.prompt.confirmEx(
win,
title.value,
null,
flags,
buttonLabel.value,
null,
null,
checkboxLabel.value,
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;
}
})();
Alles anzeigen
Da mir aber nicht klar ist, was genau das Script gegenüber dem Standard-Verhalten verändert, weiß ich nicht, was ich testen muss.
was genau das Script gegenüber dem Standard-Verhalten verändert
Hallo Sören.
Mit dem Skript erscheint dieser Hinweis bei nur einem geöffneten Tab, und nicht erst bei mehreren:
Der angepasste Import sieht so aus:
Funktioniert leider auch nicht.
Mit dem Skript erscheint dieser Hinweis bei nur einem geöffneten Tab, und nicht erst bei mehreren:
Da dieser Hinweis so überhaupt nicht von Firefox kommt, weiß ich nicht, welcher Hinweis genau das ist (Wird Firefox beendet? Wird ein Fenster geschlossen?). Der Dialog in deinem Screenshot spricht vom Beenden („Firefox schließen“). Aber beim Beenden von Firefox erhalte ich auch ohne Script mit nur einem offenen Tab einen Warn-Dialog:
Funktioniert leider auch nicht.
Demnach ist noch mehr anzupassen. Aber zumindest der Import des BrowserGlue-Moduls ist damit korrigiert.
Wird Firefox beendet? Wird ein Fenster geschlossen?
In dem Skript für das Nightly lautet der eigene Text von mir dazu:
Also rechts oben auf das X zum Beenden vom Fx, bei nur einem Tab im Fenster.
Mit dem defekten Skript erscheint jetzt gar keine Meldung mehr.
Auch wenn ich ein weiteres Fenster mit nur einem Tab habe, erscheint diese Meldung dann für dieses Fenster.
Aber beim Beenden von Firefox erhalte ich auch ohne Script mit nur einem offenen Tab einen Warn-Dialog:
Ich hier in keinem meiner Fx Profile.
Darum ja auch das Skript dafür.
Erst ab 2 Tabs erscheint die Warnung hier ohne Skript.
Erst ab 2 Tabs erscheint die Warnung hier ohne Skript.
Das sollte Fx Standard sein, oder? Irgendwelche Scripte laufen hier übrigens nicht....
Das sollte Fx Standard sein, oder?
Ab 2 Tabs und mehr, ja.
Neuer Versuch: Es gibt sowohl in der BrowserGlue.jsm als auch in der BrowserGlue.sys.mjs eine Zeile, wo die Funktion BrowserGlue() aufgerufen wird:
Das ist die Zeile 874 aus der BrowserGlue.jsm.
In der BrowserGlue.sys.mjs Zeile 890 steht da noch der Befehl export am Anfang:
Könnte das Auswirkung auf das Benutzerskript haben?
Könnte das Auswirkung auf das Benutzerskript haben?
Das kann uns wohl nur Sören oder aborix sagen
Das kann uns wohl nur Sören oder aborix sagen
Ja, das habe ich auch mit einem gewissen Seitenblick zu ihnen geschrieben.
zu ihnen geschrieben.