Ups...das ist ja peinlich...sorry dann
Wieso „sorry“? So kommt keine Langeweile auf.
Ups...das ist ja peinlich...sorry dann
Wieso „sorry“? So kommt keine Langeweile auf.
So kommt keine Langeweile auf.
Stimmt auch wieder
Jetzt habe ich das Problem...welches Skript ich nun nehmen soll
Danke für Deine Hinweise, werde ich abends dann verarbeiten, melde mich dann wieder
Dann entschuldige ich mich noch für das Durcheinander, dass ich mit dem Script userChromeShadow.uc.js angerichtet habe.
Es ist nämlich so, dass ich zwei Scripte vereinigt habe, dort ist auch dieses enthalten, hat aber mit der Thematik nichts zu tun, dafür ist der zweite Teil zuständig.
// userChromeShadow.uc.js by aborix
// 28.07.2022 FF104+ Fix: using PathUtils.join (Sören Hentzschel)
// https://www.camp-firefox.de/forum/thema/132865-shadowroot-neue-aufruf-methode-f%C3%BCr-css-regeln-wichtiges-update-28-07-2022/?postID=1175307#post1175307
(async function() {
if (location != 'chrome://browser/content/browser.xhtml') return;
try {
let path = PathUtils.join(PathUtils.profileDir, 'chrome', 'userChromeShadow.css');
let cssIn = await IOUtils.readUTF8(path);
let sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
let uri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(cssIn));
sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET);
} catch(e) {
console.log("UserChromeShadow-Error: " + e.name + ': ' + e.message );
};
})();
// legt einen Button für userShadow.css (im Ordner chrome) an, und ruft die Datei direkt auf
(function() {
if (location != AppConstants.BROWSER_CHROME_URL) return;
try {
//ChromeUtils.importESModule("resource:///modules/CustomizableUI.sys.mjs");
Components.utils.import("resource:///modules/CustomizableUI.jsm");
CustomizableUI.createWidget({
id: "OpenCSSShadowbutton",
defaultArea: CustomizableUI.AREA_NAVBAR,
removable: true,
label: "OpenCSSShadowbutton",
tooltiptext: "userChromeShadow.css",
onClick: function(event) {
if (event.button != 0){
return;
}
var dir = Services.dirsvc.get('UChrm', Ci.nsIFile);
dir.append('userChromeShadow.css');
// dir.append('Test.css');
dir.launch();
},
onCreated: function(aNode) {
aNode.style.listStyleImage = 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAABqUlEQVQokWP89OkTAymABc76+fb99YnzXuw7xsrP67RpLiMzMz4NXx8/2+eV8OXhE05JMW45KQYGRgI2nM6r//r4qemEeuX4ELjZf7//+PX+I6eUOLIGJgYGhm9PXrzYf1wuyEslKRyu+sW+Yxs0HDdqO3958ARDw9Pn///9EzbRRZY4XdjIwMCgXZbJKSmGroFdSJCBgeHL/ccI4f//v9x/LOFgqVuZzczOxvD//49Xb/7//QvVwKMkJ6Ctdm/xurdnLqF4kImRgYHh9+cv+3yTNqg53Ji8AKqBkZnJdEI9AwPDHvfYQ+HZ13pn/f//H67r5tRFLw+dlPFxFnewhGpgYGAQMTd03r5QxNzgxb6jN6ct/v/nL1zD5zsPmNjYzGe0CRloMSBHnJChjvO2hb8/f2VkYvzz5SsDAwMTKwsDA8N/BgZGRgZGRiaEp5EBKy/3wzXbNht6MjAwSDrbMGAAFixCXJx86koKod4KYT5EaZAP9ZYP9YZzf3/6wsDIyMjMhFMDHHx79vJQaOaHKzfF7S2YOdix+wEF/P/PyMoiH+JlOacTLgYAnMqRpg2c0p8AAAAASUVORK5CYII=)';
return aNode;
}
});
} catch (e) {
Components.utils.reportError(e);
};
})();
Alles anzeigen
Jetzt habe ich das Problem...welches Skript ich nun nehmen soll
Dabei kann ich dir nicht helfen. Die müssten doch eigentlich gleichzeitig verwendbar sein. Du kannst sie doch parallel testen und änderst das Symbol von einem Skript, um sie unterscheiden zu können. Wenn die sich aber nicht sehr unterscheiden, bringt das nicht viel. Vielleicht vergleichst du mal beide Skripte in einem Vergleichsprogramm bzw. mit dem Vergleichs-Plugin von Notepad++, um mal die Unterschiede festzustellen. Vielleicht macht ein Skript mehr als das andere. Nur so ein Gedanke.
Dann entschuldige ich mich noch für das Durcheinander, dass ich mit dem Script userChromeShadow.uc.js angerichtet habe.
War doch kein Durcheinander. Wir waren nur etwas irritiert.
um mal die Unterschiede festzustellen
In der Funktion ändert sich nichts.
Ich behalte jetzt das aus Beitrag Nr. 138, weil ich es inzwischen in mehreren Profilen eingefügt hatte.
Es funktioniert auch schon in Fx 114.
Was hältst du denn davon, mal einen Beitrag zu erstellen, der alle bisher angepassten Skripte auflistet? Ich dachte auch so als Unterstützung bzw. Orientierung für Endor, der ja die angepassten Versionen auf seine Website bringen müsste.
der alle bisher angepassten Skripte auflistet?
Das könnte man dann unter Anpassungen machen.
Jeder postet sein angepasstes Skript in einem extra neuen Thema dafür.
Problem könnte sein, manch ein Nutzer hat einen anderen/eigenen Namen für das Skript.
Problem könnte sein, manch ein Nutzer hat einen anderen/eigenen Namen für das Skript.
Manchmal steht der Originalname im Skript. Man könnte auch Endor fragen bzw. auf seiner Website nachsehen, unter welchen Namen er es dort gelistet hat. Schwierig wird es nur bei den Skripten von aborix, da er meines Wissens nur den Code bereitgestellt hat. Vielleicht könnte man auch eine Zeile hinzufügen, was das Skript macht, sodass die Nutzer dann einen Anhaltspunkt haben.
Was die Zeilen in deinen beiden Skripten angeht, so gilt für saveTo104+.uc.js ab Firefox 113:
Leider funktioniert es dann nicht mehr, weil der Button nicht mehr angezeigt wird. Hat wer einen Tipp dazu?
Hast du das so eingetragen?
Im aktuellen Nightly:
// ==UserScript==
// @include chrome://mozapps/content/downloads/unknownContentType.xhtml
// @charset UTF-8
// @version Fx104+
// ==/UserScript==
(function () {
const Cu = Components.utils;
if (!window.FileUtils) ChromeUtils.importESModule('resource://gre/modules/FileUtils.sys.mjs');
if (!window.Services) Cu.import('resource://gre/modules/Services.jsm');
setTimeout(function () {
saveTo();
}, 200);
function saveTo() {
// Config
const dirArray = [
[FileUtils.getDir('UChrm', []).path, 'chrome'],
['D:\\Download Firefox', 'Download Firefox'],
['D:\\Download Firefox\\Dokumente'],
['D:\\Download Firefox\\Bilder'],
['D:\\Download Firefox\\Software'],
['D:\\Download Firefox\\Ablage'],
['D:\\Download Firefox\\Sonstiges'],
["C:\\", "C:"],
["E:\\", "E:"],
];
const button = document.getElementById('unknownContentType').getButton('cancel');
const saveTo = button.parentNode.insertBefore(document.createXULElement('button'), button);
const saveToMenu = saveTo.appendChild(document.createXULElement('menupopup'));
saveTo.classList.toggle('dialog-button');
saveTo.label = 'Speichern nach';
saveTo.type = 'menu';
const css =`
hbox.dialog-button-box button.dialog-button menupopup {
background: gold !important;
min-width: 220px !important;
padding: 5px !important;
margin: 15px 0 0 -62px !important;
border: 3px solid dodgerblue !important;
}
hbox.dialog-button-box button.dialog-button menupopup menuitem{
appearance: none !important;
color: blue !important;
background: #fefefc !important;
border: 1px solid silver !important;
margin-top: 1px !important;
border-radius: 7px !important;
padding-left: 12px !important;
}
hbox.dialog-button-box button.dialog-button menupopup menuitem:hover {
background: greenyellow !important;
border: 1px solid red !important;
}
hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic label.menu-iconic-text {
color: blue !important;
font-size: 15px !important;
font-weight: 600 !important;
margin-left: 12px !important;
margin-top: 1px !important;
} `;
const sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
const uri = Services.io.newURI('data:text/css,' + encodeURIComponent(css));
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
dirArray.forEach(function (directory) {
const [name, dir] = [directory[1], directory[0]];
const mi = document.createXULElement('menuitem');
const item = saveToMenu.appendChild(mi);
item.setAttribute('label', (name || (dir.match(/[^\\/]+$/) || [dir])[0]));
item.setAttribute('image', 'moz-icon:file:///' + dir + '\\');
item.setAttribute('class', 'menuitem-iconic');
item.addEventListener('command', function () {
const locationtext = document.getElementById('locationtext');
const pathFile = dir + '\\' + (locationtext ? locationtext.value : document.getElementById('location').value);
const file = new FileUtils.File(pathFile);
dialog.mLauncher.saveDestinationAvailable(file);
dialog.onCancel = function () {};
close();
});
});
}
}());
Alles anzeigen
Im aktuellen Nightly:
Funktioniert hier auch nicht
Teste bitte mal mein Skript, und pass es dir dann wieder an:
// ==UserScript==
// @include chrome://mozapps/content/downloads/unknownContentType.xhtml
// @charset UTF-8
// @version Fx104+ von BrokenHeart und Sören https://www.camp-firefox.de/forum/thema/130391-saveto-uc-js/?postID=1208292#post1208292
// ==/UserScript==
(function () {
const Cu = Components.utils;
//if (!window.FileUtils) Cu.import('resource://gre/modules/FileUtils.jsm');
if (!window.FileUtils) ChromeUtils.importESModule('resource://gre/modules/FileUtils.sys.mjs');
if (!window.Services) Cu.import('resource://gre/modules/Services.jsm');
setTimeout(function () {
saveTo()
}, 200);
function saveTo() {
// Config
const dirArray = [
['C:\\Users\\Andi\\Downloads\\Test\\zum entpacken','Auspacken'],
['C:\\Users\\Andi\\Documents', 'Dokumente'],
['C:\\Users\\Andi\\Downloads', 'Downloads'],
//['D:\\Telefonrechnungen'],
//["" + FileUtils.getDir('UChrm', []).path + "", "chrome"],
//["" + FileUtils.getDir('UChrm', ['SubScript']).path + "", "SubScript"],
['F:\\', 'F:'],
['U:\\', 'U:'],
];
const button = document.getElementById('unknownContentType').getButton('cancel');
const saveTo = button.parentNode.insertBefore(document.createXULElement('button'), button);
const saveToMenu = saveTo.appendChild(document.createXULElement('menupopup'));
saveTo.classList.toggle('dialog-button');
saveTo.label = 'Speichern in…';
saveTo.type = 'menu';
const css =`
hbox.dialog-button-box button.dialog-button menupopup {
color: white !important;
background: black !important;
}
hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic:hover {
background: red !important;
color: white !important;
}
hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic hbox.menu-iconic-left {
padding-left: 6px !important;
margin-left: 1px !important;
}
hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic label.menu-iconic-text {
padding-right: 5px !important;
padding-left: 4px !important;
}`;
const sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
const uri = Services.io.newURI('data:text/css,' + encodeURIComponent(css))
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
dirArray.forEach(function (directory) {
const [name, dir] = [directory[1], directory[0]];
const mi = document.createXULElement('menuitem');
const item = saveToMenu.appendChild(mi);
item.setAttribute('label', (name || (dir.match(/[^\\/]+$/) || [dir])[0]));
item.setAttribute('image', 'moz-icon:file:///' + dir + '\\');
item.setAttribute('class', 'menuitem-iconic');
item.addEventListener('command', function () {
const locationtext = document.getElementById('locationtext');
const pathFile = dir + '\\' + (locationtext ? locationtext.value : document.getElementById('location').value);
const file = new FileUtils.File(pathFile);
dialog.mLauncher.saveDestinationAvailable(file);
dialog.onCancel = function() {};
close();
});
});
}
}());
Alles anzeigen
Teste bitte mal mein Skript
Das funktioniert, was ist denn da wieder los. Muss ich mal auf Spurensuche, danke, Andreas.
Muss ich mal auf Spurensuche, danke, Andreas.
Das ist dein Skript, ich musste Zeile 18 auskommentieren.
// ==UserScript==
// @include chrome://mozapps/content/downloads/unknownContentType.xhtml
// @charset UTF-8
// @version Fx104+
// ==/UserScript==
(function () {
const Cu = Components.utils;
if (!window.FileUtils) ChromeUtils.importESModule('resource://gre/modules/FileUtils.sys.mjs');
if (!window.Services) Cu.import('resource://gre/modules/Services.jsm');
setTimeout(function () {
saveTo();
}, 200);
function saveTo() {
// Config
const dirArray = [
/* [FileUtils.getDir('UChrm', []).path, 'chrome'], */
['D:\\Download Firefox', 'Download Firefox'],
['D:\\Download Firefox\\Dokumente'],
['D:\\Download Firefox\\Bilder'],
['D:\\Download Firefox\\Software'],
['D:\\Download Firefox\\Ablage'],
['D:\\Download Firefox\\Sonstiges'],
["C:\\", "C:"],
["E:\\", "E:"],
];
const button = document.getElementById('unknownContentType').getButton('cancel');
const saveTo = button.parentNode.insertBefore(document.createXULElement('button'), button);
const saveToMenu = saveTo.appendChild(document.createXULElement('menupopup'));
saveTo.classList.toggle('dialog-button');
saveTo.label = 'Speichern nach';
saveTo.type = 'menu';
const css =`
hbox.dialog-button-box button.dialog-button menupopup {
background: gold !important;
min-width: 220px !important;
padding: 5px !important;
margin: 15px 0 0 -62px !important;
border: 3px solid dodgerblue !important;
}
hbox.dialog-button-box button.dialog-button menupopup menuitem{
appearance: none !important;
color: blue !important;
background: #fefefc !important;
border: 1px solid silver !important;
margin-top: 1px !important;
border-radius: 7px !important;
padding-left: 12px !important;
}
hbox.dialog-button-box button.dialog-button menupopup menuitem:hover {
background: greenyellow !important;
border: 1px solid red !important;
}
hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic label.menu-iconic-text {
color: blue !important;
font-size: 15px !important;
font-weight: 600 !important;
margin-left: 12px !important;
margin-top: 1px !important;
} `;
const sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
const uri = Services.io.newURI('data:text/css,' + encodeURIComponent(css));
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
dirArray.forEach(function (directory) {
const [name, dir] = [directory[1], directory[0]];
const mi = document.createXULElement('menuitem');
const item = saveToMenu.appendChild(mi);
item.setAttribute('label', (name || (dir.match(/[^\\/]+$/) || [dir])[0]));
item.setAttribute('image', 'moz-icon:file:///' + dir + '\\');
item.setAttribute('class', 'menuitem-iconic');
item.addEventListener('command', function () {
const locationtext = document.getElementById('locationtext');
const pathFile = dir + '\\' + (locationtext ? locationtext.value : document.getElementById('location').value);
const file = new FileUtils.File(pathFile);
dialog.mLauncher.saveDestinationAvailable(file);
dialog.onCancel = function () {};
close();
});
});
}
}());
Alles anzeigen
Das ist dein Skript, ich musste Zeile 18 auskommentieren.
Ich habe sie ganz raus genommen, und siehe da, das war der Übeltäter.
Ich habe hier z. B. noch das Skript Appmenu.uc.js, das ein Menü Firefox mit verschiedenen Einträgen anlegt, wie es wohl mal bis Firefox 4? war. Dort bitte mal Folgendes ersetzen:
In zwei Profilen nutze ich das Script auch, wo ich für den Aufruf der Browser-Werkzeuge bisher den Code verwendet habe:
{
name: 'Browser-Werkzeuge',
subdir: 'Firefox Funktionen',
command: "var { require } = ChromeUtils.import('resource://devtools/shared/Loader.jsm', {});\
var { BrowserToolboxLauncher } = require('resource://devtools/client/framework/browser-toolbox/Launcher.jsm');\
BrowserToolboxLauncher.init();",
},
Button und Icon alles da, nur der Aufruf schlägt fehl. Auch mit den von Dir gezeigten Änderungen dazu.
Wie müsste der Eintrag denn genau aussehen?
Edit:
Danke, hat sich erledigt. Habe immer v114 versucht, da funktioniert es natürlich noch nicht, aber im Nightly schon.
das war der Übeltäter.
Problem erledigt, sehr schön
Danke, hat sich erledigt.
Bei beiden Skripten?
Bei beiden Skripten?
Ja, milupo, alles bestens. Danke!
Services ist noch .jsm, die zwei anderen sind bereits .sys.mjs.
(Die zwei anderen sind FormHistory.sys.mjs und LoginHelper.sys.mjs.)
Ja, danke. Ich hätte aber auch selber auf die Idee kommen können nachzuforschen.
Ich nutze nachfolgendes Script, in dem FormHistory.jsm drin vorkommt. Mit dieser Schreibweise [Zeile 7] funktioniert es (im Nightly, Release nicht getestet) Wenn ich den Code umschreibe [Zeile 8], funktioniert es nicht mehr. Ist der Terminus (noch) nicht betroffen oder mache ich was falsch?
/* Suchfeld automatisch leeren */
(function() {
const lazy = {};
XPCOMUtils.defineLazyModuleGetters(lazy, {
FormHistory: "resource://gre/modules/FormHistory.jsm",
//FormHistory: "resource://gre/modules/FormHistory.sys.mjs",
});
var searchbar = document.getElementById("searchbar");
searchbar.doSearch = function(aData, aWhere, aEngine, aParams, aOneOff) {
let textBox = this._textbox;
if (aData && !PrivateBrowsingUtils.isWindowPrivate(window) && lazy.FormHistory.enabled) {
lazy.FormHistory.update({
op: "bump",
fieldname: textBox.getAttribute("autocompletesearchparam"),
value: aData,
}, {
handleError(aError) {
Cu.reportError("Saving search to form history failed: " + aError.message);
},
});
}
let engine = aEngine || this.currentEngine;
let submission = engine.getSubmission(aData, null, "searchbar");
let telemetrySearchDetails = this.telemetrySearchDetails;
this.telemetrySearchDetails = null;
if (telemetrySearchDetails && telemetrySearchDetails.index == -1) {
telemetrySearchDetails = null;
}
const details = {
isOneOff: aOneOff,
isSuggestion: (!aOneOff && telemetrySearchDetails),
selection: telemetrySearchDetails,
};
// BrowserSearch.recordSearchInTelemetry(engine, "searchbar", details);
let params = {
postData: submission.postData,
};
if (aParams) {
for (let key in aParams) {
params[key] = aParams[key];
}
}
openTrustedLinkIn(submission.uri.spec, "tab", params);
this.value = '';
this.currentEngine = this.engines ? this.engines[0] : this._engines[0];
};
}());
Alles anzeigen
BTW: Nightly spricht mit der heutigen Version wieder Deutsch