Diese Version funktioniert hier einwandfrei.
Die tut es hier überhaupt nicht - weder in 141 noch in der Nightly...
Diese Version funktioniert hier einwandfrei.
Die tut es hier überhaupt nicht - weder in 141 noch in der Nightly...
Diese Version funktioniert hier einwandfrei.
Und obendrein ist es noch eine alte Version, mit 'onpopupshowing' und 'oncommand'.
Hier die neuere, bei der aber leider das Anklicken nicht geht!
// newTabButtonUndoTabList.uc.js
"use strict";
/* ******************************************************************************************************** */
/* Beschreibung */
/* Bei Rechtsklick auf die Neuen Tab Schaltfläche, wird im Kontextmenü, */
/* der Eintrag zum Wiederherstellen des zuletzt geschlossenen Tabs angezeigt. */
/* Customized by BrokenHeart */
/* */
/* https://www.camp-firefox.de/forum/thema/112673/?postID=1223733#post1223733 */
/* https://www.camp-firefox.de/forum/thema/112673/?postID=1228286#post1228286 */
/* */
/* ******************************************************************************************************** */
(function () {
if (!window.gBrowser){
return;
}
gBrowser.tabContainer.addEventListener('click', function (e) {
if (e.originalTarget.id != 'tabs-newtab-button') return;
switch (e.button) {
case 1:
undoCloseTab(0);
break;
case 2:
UCT.makePopup(e);
e.preventDefault();
break;
}
}, false);
})();
var UCT = {
init: function () {
var mp = document.createXULElement("menupopup");
mp.id = "undo-close-tab-list";
mp.addEventListener('popupshowing', function(event) {
UCT.onpopupshowing(event);
}, true);
mp.setAttribute("placespopup", true);
mp.setAttribute("tooltip", "bhTooltip");
mp.setAttribute("popupsinherittooltip", true);
document?.getElementById("mainPopupSet")?.appendChild(mp);
},
makePopup: function (e) {
if (SessionStore.getClosedTabCountForWindow(window) != 0) {
document.getElementById("undo-close-tab-list").openPopupAtScreen(e.screenX +2, e.screenY +2, false);
}
else
{
console.log("--- Es gibt keinen Tab, der wiederhergestellt werden kann ---");
}
},
onpopupshowing: function (e) {
var popup = e.target;
while (popup.hasChildNodes())
popup.removeChild(popup.firstChild);
let undoItems = SessionStore.getClosedTabDataForWindow(window);
undoItems.map(function (item, id) {
var m = document.createXULElement('menuitem');
m = document.createXULElement("menuitem");
m.setAttribute('label', item.title);
m.setAttribute('image', item.image);
m.setAttribute('class', 'menuitem-iconic bookmark-item');
m.addEventListener('command', () => {
undoCloseTab(id);
}
);
popup.appendChild(m);
});
popup.appendChild(document.createXULElement("menuseparator"));
m = document.createXULElement("menuitem");
m.setAttribute("label", "Chronik in der Sidebar öffnen");
m.setAttribute("image", "chrome://browser/skin/history.svg");
m.setAttribute("class", "menuitem-iconic");
m.addEventListener('command', function() {
SidebarController.toggle('viewHistorySidebar');
}, true);
popup.appendChild(m);
},
};
setTimeout(function() {
UCT.init();
},250);
Alles anzeigen
Ich denke ja, dass sich SessionStore.getClosedTabDataForWindow(window) geändert hat.
Wenn ja, wie?
Ich habe hier in about:config die Einstellung für CSP auf false.
Daher läuft es wahrscheinlich bei mir.
Mfg.
Endor
die Einstellung für CSP auf false.
Meinst du diese?
security.browser_xhtml_csp.report-only
Wenn ja, die gibt es nicht mehr.
Auch hier funktioniert das Skript nicht.
Meinst du diese?
security.browser_xhtml_csp.report-only
Diese Option hätte dann auf true stehen müssen, wenn es sie noch geben würde. Auf false dürfte dann eher security.browser_xhtml_csp.enabled gemeint sein.
dürfte dann eher..
Danke für die Erklärung, dann habe ich das verwechselt.
Der Fehler könnte in Zeile 73 (#4.582) liegen:
searchfox.org
security.browser_xhtml_csp.enabled
Genau.
Zeile 66 eingefügt!
console.log(undoItems); // Füge dies hinzu, um zu überprüfen, was zurückgegeben wird
Die Fehlermeldung:
Uncaught ReferenceError: undoCloseTab is not defined
onpopupshowing file:///C:/Users/Mira/AppData/Roaming/Mozilla/Firefox/Profiles/Mira/chrome/scripts/newTabButtonUndoTabList.uc.js:74
onpopupshowing file:///C:/Users/Mira/AppData/Roaming/Mozilla/Firefox/Profiles/Mira/chrome/scripts/newTabButtonUndoTabList.uc.js:73
onpopupshowing file:///C:/Users/Mira/AppData/Roaming/Mozilla/Firefox/Profiles/Mira/chrome/scripts/newTabButtonUndoTabList.uc.js:67
init file:///C:/Users/Mira/AppData/Roaming/Mozilla/Firefox/Profiles/Mira/chrome/scripts/newTabButtonUndoTabList.uc.js:41
makePopup file:///C:/Users/Mira/AppData/Roaming/Mozilla/Firefox/Profiles/Mira/chrome/scripts/newTabButtonUndoTabList.uc.js:51
<anonymous> file:///C:/Users/Mira/AppData/Roaming/Mozilla/Firefox/Profiles/Mira/chrome/scripts/newTabButtonUndoTabList.uc.js:28
Alles anzeigen
Ok, repariert!
// newTabButtonUndoTabList.uc.js
"use strict";
/* ******************************************************************************************************** */
/* Beschreibung */
/* Bei Rechtsklick auf die Neuen Tab Schaltfläche, wird im Kontextmenü, */
/* der Eintrag zum Wiederherstellen des zuletzt geschlossenen Tabs angezeigt. */
/* Customized by BrokenHeart */
/* */
/* https://www.camp-firefox.de/forum/thema/112673/?postID=1223733#post1223733 */
/* https://www.camp-firefox.de/forum/thema/112673/?postID=1228286#post1228286 */
/* https://www.camp-firefox.de/forum/thema/112673/?postID=1275928#post1275928 */
/* */
/* ******************************************************************************************************** */
(function () {
if (!window.gBrowser){
return;
}
gBrowser.tabContainer.addEventListener('click', function (e) {
if (e.originalTarget.id != 'tabs-newtab-button') return;
switch (e.button) {
case 1:
undoCloseTab(0);
break;
case 2:
UCT.makePopup(e);
e.preventDefault();
break;
}
}, false);
})();
var UCT = {
init: function () {
var mp = document.createXULElement("menupopup");
mp.id = "undo-close-tab-list";
mp.addEventListener('popupshowing', function(event) {
UCT.onpopupshowing(event);
}, true);
mp.setAttribute("placespopup", true);
mp.setAttribute("tooltip", "bhTooltip");
mp.setAttribute("popupsinherittooltip", true);
document?.getElementById("mainPopupSet")?.appendChild(mp);
},
makePopup: function (e) {
if (SessionStore.getClosedTabCountForWindow(window) != 0) {
document.getElementById("undo-close-tab-list").openPopupAtScreen(e.screenX +2, e.screenY +2, false);
}
else
{
console.log("--- Es gibt keinen Tab, der wiederhergestellt werden kann ---");
}
},
onpopupshowing: function (e) {
var popup = e.target;
while (popup.hasChildNodes())
popup.removeChild(popup.firstChild);
let undoItems = SessionStore.getClosedTabDataForWindow(window);
undoItems.map(function (item, id) {
var m = document.createXULElement('menuitem');
m.setAttribute('label', item.title);
m.setAttribute('image', item.image);
m.setAttribute('class', 'menuitem-iconic bookmark-item');
m.addEventListener('command', () => {
undoCloseTab(id);
}
);
popup.appendChild(m);
});
popup.appendChild(document.createXULElement("menuseparator"));
m = document.createXULElement("menuitem");
m.setAttribute("label", "Chronik in der Sidebar öffnen");
m.setAttribute("image", "chrome://browser/skin/history.svg");
m.setAttribute("class", "menuitem-iconic");
m.addEventListener('command', function() {
SidebarController.toggle('viewHistorySidebar');
}, true);
popup.appendChild(m);
},
};
// Definition der undoCloseTab-Funktion
function undoCloseTab(id) {
try {
var undoTabData = SessionStore.getClosedTabDataForWindow(window)[id];
if (undoTabData) {
SessionStore.undoCloseTab(window, id);
console.log(`Tab mit ID ${id} wurde wiederhergestellt.`);
}
} catch (e) {
console.error("Fehler beim Wiederherstellen des Tabs:", e);
}
}
setTimeout(function() {
UCT.init();
}, 250);
Alles anzeigen
Was hat die Ki verändert? Ein Auszug aus dem Quelltext wäre hilfreich.
Was hat die Ki verändert? Ein Auszug aus dem Quelltext wäre hilfreich.
Zeilen 91 bis 102 weil undoCloseTab(id) nicht definiert war!
Oups, nm.
Ich hätte grob geraten, basierend darauf ... in deinem alten JS:
Zeile 25 undoCloseTab(0); => undoCloseTab(window, 0);.
Evtl. noch Zeile 73 undoCloseTab(id); => undoCloseTab(window, id).
Ist aber wohl veraltet.
Wer denkt sich sowas überhaupt aus?
Frag mal BrokenHeart
Ist schon im ersten Beitrag von ihm so. Von ihm ist das Skript.
Was hat die Ki verändert? Ein Auszug aus dem Quelltext wäre hilfreich.
Es tut mir leid, wenn ich kein JS kann.
Ki kann einem aber dabei helfen, Skripte wieder lauffähig zu bekommen.
Ist aber dennoch nicht so einfach, man muss auch schon der Ki die richtigen Fragen stellen und ihr auch hinweise geben.
Auch bedarf es oft mehrere Anläufe und auch verschiedene KI's.
Dieses Mal hatte die Französin nur Käse von sich gegeben, aber Chatty brachte die Lösung.
Selten bekomme ich auch ohne KI Änderungen hin, aber nur, wenn ich woanders abschreiben kann
und ich so halbwegs verstehe, was das Skript macht.
Habe mithilfe verschiedener KI's noch etwas gebastelt und einen besseren Workaround erarbeitet.
// newTabButtonUndoTabList_neu.uc.js
"use strict";
/* ******************************************************************************************************** */
/* Beschreibung */
/* Bei Rechtsklick auf die Neuen Tab Schaltfläche, wird im Kontextmenü, */
/* der Eintrag zum Wiederherstellen des zuletzt geschlossenen Tabs angezeigt. */
/* Customized by BrokenHeart */
/* */
/* https://www.camp-firefox.de/forum/thema/112673/?postID=1223733#post1223733 */
/* https://www.camp-firefox.de/forum/thema/112673/?postID=1228286#post1228286 */
/* https://www.camp-firefox.de/forum/thema/112673/?postID=1275928#post1275928 */
/* Workaround */
/* https://www.camp-firefox.de/forum/thema/112673/?postID=1275945#post1275945 */
/* */
/* ******************************************************************************************************** */
(function () {
if (!window.gBrowser){
return;
}
gBrowser.tabContainer.addEventListener('click', function (e) {
if (e.originalTarget.id != 'tabs-newtab-button') return;
switch (e.button) {
case 1:
UCT.undoCloseTab(0);
break;
case 2:
UCT.makePopup(e);
e.preventDefault();
break;
}
}, false);
})();
var UCT = {
init: function () {
var mp = document.createXULElement("menupopup");
mp.id = "undo-close-tab-list";
mp.addEventListener('popupshowing', function(event) {
UCT.onpopupshowing(event);
}, true);
mp.setAttribute("placespopup", true);
mp.setAttribute("tooltip", "bhTooltip");
mp.setAttribute("popupsinherittooltip", true);
document?.getElementById("mainPopupSet")?.appendChild(mp);
},
makePopup: function (e) {
if (SessionStore.getClosedTabCountForWindow(window) != 0) {
document.getElementById("undo-close-tab-list").openPopupAtScreen(e.screenX + 2, e.screenY + 2, false);
} else {
console.log("--- Es gibt keinen Tab, der wiederhergestellt werden kann ---");
}
},
onpopupshowing: function (e) {
var popup = e.target;
while (popup.hasChildNodes())
popup.removeChild(popup.firstChild);
let undoItems = SessionStore.getClosedTabDataForWindow(window);
console.log(undoItems); // Debug-Ausgabe
undoItems.map(function (item, id) {
var m = document.createXULElement("menuitem");
m.setAttribute("label", item.title);
m.setAttribute("image", item.image);
m.setAttribute("class", "menuitem-iconic bookmark-item");
m.addEventListener("command", () => {
UCT.undoCloseTab(id);
});
popup.appendChild(m);
});
popup.appendChild(document.createXULElement("menuseparator"));
let m = document.createXULElement("menuitem");
m.setAttribute("label", "Chronik in der Sidebar öffnen");
m.setAttribute("image", "chrome://browser/skin/history.svg");
m.setAttribute("class", "menuitem-iconic");
m.addEventListener("command", function() {
SidebarController.toggle("viewHistorySidebar");
}, true);
popup.appendChild(m);
},
undoCloseTab: function(id) {
try {
let undoTabData = SessionStore.getClosedTabDataForWindow(window)[id];
if (undoTabData) {
SessionStore.undoCloseTab(window, id);
}
} catch (e) {
console.error("Fehler beim Wiederherstellen des Tabs:", e);
}
},
};
setTimeout(function() {
UCT.init();
}, 250);
Alles anzeigen
Bis ein JavaScript-Profi die API auseinandergenommen hat,
und das Skript dann darauf hin angepasst hat, muss es diese Lösung tun!
security.browser_xhtml_csp.report-only
Er scheint in v141 durch den folgenden ersetzt worden zu sein security.csp.reporting.enabled
Nein. Abgesehen davon, dass die Option security.csp.reporting.enabled bereits in Firefox 140 eingeführt wurde, hat diese überhaupt nichts damit zu tun und wird daher auch nicht helfen, dass Scripts funktionieren, die auf Grund einer CSP nicht funktionieren. Bei der Option geht um CSP-Berichte für Websites.
Der Unterschied liegt nicht nur zwischen Website und Browser. Während es bei security.csp.reporting.enabled um das Aktivieren respektive Deaktivieren von Berichten geht, ging es bei security.browser_xhtml_csp.report-only um das Aktivieren respektive Deaktivieren der CSP selbst (report only = berichte und schalte die CSP ab).
Die Option security.browser_xhtml_csp.report-only wurde ersatzlos entfernt, weil es schlicht und ergreifend keinen Anwendungsfall mehr dafür gibt. Mozilla hat die CSP für die Firefox-Oberfläche standardmäßig für alle Nutzer aktiviert und benötigt dementsprechend keine Telemetrie mehr, um Probleme zu erkennen, die eine standardmäßige Aktivierung verhindern. Und um nur die CSP für die Browseroberfläche abzuschalten, gab es bereits security.browser_xhtml_csp.enabled.