Ich werde das morgen überprüfen können.
Hat sich erledigt, funzt. Dankeschön für den Hinweis! Habe das Icon in Beitrag #8 ersetzt.
Ich werde das morgen überprüfen können.
Hat sich erledigt, funzt. Dankeschön für den Hinweis! Habe das Icon in Beitrag #8 ersetzt.
Der Grund könnte dieser sein (Die Befehle haben sich geändert):
EDIT: Icon ausgetauscht (wegen Darstellungsproblemen im Fileexplorer unter Windows)
EDIT: Icons nochmal getauscht 24.07.25, 9:50 Uhr
z.B.:
// JavaScript Document
// B_RestoreLastClosedTab.uc.js
// Firefox 141.0+
// Das Script erstellt einen Button der den letzten geschlossenen Tab/die letzte geschlossene Sitzung oder das letzte geschlossene Fenster wiederherstellt. Das .svg-Icon kann - je nach Hover-Zustand - mit zwei unterschiedlichen Farben gefüllt werden [fill].
// Für das mitgelieferte Icon als .svg-Datei mit [moz-context-properties] ändert das Script die Einstellung [svg.context-properties.content.enabled] in about:config auf 'true'.
(function() {
if (!window.gBrowser)
return;
const
// ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
id = 'restoreLastClosed-button', // Id des neuen Buttons
label = 'Geschl. Tab/Sitzung/Fenster wiederherst.', // Bezeichnung des neuen Buttons
tooltiptext = 'Geschlossenen Tab/Sitzung/Fenster wiederherstellen',
// Icon-------------------------------------------------------
icon = '16_reload_moz.svg', // [Name.Dateiendung] des Symbols
iconPath = '/chrome/icons/', // Pfad zum Ordner der das Icon beinhaltet
iconColOu = 'gray', // Farbe des Icons (nur .svg-Datei mit [moz-context-properties], bei anderen Icons hat const iconColOu keine Funktion)
iconColOv = 'currentColor', // Farbe des Icons beim Überfahren des Buttons (nur .svg-Datei mit [moz-context-properties], bei anderen Icons hat const iconColOv keine Funktion)
// ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir)),
cl = '.toolbarbutton-icon';
//const end
if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
Services.prefs.setBoolPref('svg.context-properties.content.enabled', true );
}
//----
CustomizableUI.createWidget({
id: id,
type: 'button',
defaultArea: CustomizableUI.AREA_NAVBAR,
label: label,
tooltiptext: tooltiptext,
onCreated: (button) => {
button.style.MozContextProperties = 'fill, stroke, fill-opacity';
button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
button.style.fill = iconColOu;
button.style.minWidth = 'fit-content';
//over
button.addEventListener('mouseover', () => {
button.style.fill = iconColOv;
// button.querySelector(cl).style.rotate = '90deg';
});
//out
button.addEventListener('mouseout', () => {
button.style.fill = iconColOu;
// button.querySelector(cl).style.rotate = '0deg';
});
//contextmenu
button.addEventListener('contextmenu', e => {
if (event.button === 2) {
e.preventDefault();
}
});
//click
button.addEventListener('click', () => {
if (event.button === 0) {
event.target.ownerGlobal.SessionWindowUI.restoreLastClosedTabOrWindowOrSession(window);
}
});
}
});
//----
})();
Alles anzeigen
Horstmann , es fehlt - damit es in neueren Firefoxversionen funzt - ein Slash nach der Angabe des Profilpfades. Den könnte man z.B. hier einfügen:
style: 'list-style-image: url("' + ProfilePath +'/'+ buttonicon + '");'
Mit dieser allgemeinen Aussage, die mit der Frage des TE's nichts zu tun hat, hat er dem TE sicherlich bei seiner Problemlösung nicht geholfen, das ist reine Selbstdarstellung seinerseits. Ich kann dem TE leider nicht helfen => Linux.
Ich benutze G-Data auf ca. 10 verschiedenen Win10 Systemen.
Nur bei meinem tritt der Fehler ab und zu auf.
deinstalliere diese unnütze Systembremse vollständig und rückstandsfrei. Anschließend bist Du nicht etwa schlechter, sondern mit dem Defender sogar besser geschützt.
schlingo, ist dieser Satz eigentlich der Einzige den du drauf hast? Bei 10 Rechnern liegt das Problem sicherlich woanders!
Kann mir Blondine jemand mit einfachen Sätzen erklären, was dieses Skript tun soll?
den kleinen AI JS Code
Dann kannst Du diese Frage sicherlich beantworten.....
Kann mir Blondine jemand mit einfachen Sätzen erklären, was dieses Skript tun soll?
Warnung: dieses JS ist modifiziertes AI, konnte sonst nix finden.
Frag doch einfach mal Deine Französin, auf diese Antwort wäre ich gespannt. Sozusagen Ki fragt AI...
Ja es blockiert auch Logins
Deshalb habe ich mal angefangen den css-Teil mit den Dropdowns aufzudröseln, diese Sammlung blockiert bei mir jedenfalls kein Login; ich habe längst nicht alle Popups erfasst, einige funktionieren auch nur nach einem Neustart [hasbeenopened = "true"], vielleicht kann ja jemand damit was anfangen und weiterentwickeln (Die Rahmen sind nur zum testen):
menu > menupopup {
--trans_x: -100%;
}
menu > menupopup.flipper {
--trans_x: 100%;
}
/*--------------------------------*/
menu > #usercssloader-menupopup {
outline: 2px solid magenta;
outline-offset: -2px !important;
}
menu > #usercssloader-menupopup {
opacity: 0 !important;
transform: translateY(-100%) !important;
}
menu[open] > #usercssloader-menupopup {
opacity: 1 !important;
transform: translateY(0) !important;
transition: transform 0.5s ease-in-out, opacity 0.5s ease-in-out !important;
}
/*--------------------------------*/
/*funzt nur beim ersten mal nach Neustart*/
#tabContextMenu {
outline: 2px solid gold;
outline-offset: -2px !important;
}
#tabContextMenu:not([hasbeenopened = "true"]) {
opacity: 0 !important;
transform: translateY(-100%) !important;
}
#tabContextMenu[hasbeenopened = "true"] {
opacity: 1 !important;
transform: translateY(0) !important;
transition: transform 0.5s ease-in-out, opacity 0.5s ease-in-out !important;
}
/*--------------------------------*/
/*funzt nur beim ersten mal nach Neustart*/
#contentAreaContextMenu {
outline: 2px solid lightblue;
outline-offset: -2px !important;
}
#contentAreaContextMenu:not([hasbeenopened = "true"]) {
opacity: 0 !important;
transform: translateY(-100%) !important;
}
#contentAreaContextMenu[hasbeenopened = "true"] {
opacity: 1 !important;
transform: translateY(0) !important;
transition: transform 0.5s ease-in-out, opacity 0.5s ease-in-out !important;
}
/*--------------------------------*/
#confirmation-hint {
outline: 2px solid red;
outline-offset: -2px !important;
}
#confirmation-hint {
opacity: 0 !important;
transform: translateY(-100%) !important;
}
#confirmation-hint[panelopen] {
opacity: 1 !important;
transform: translateY(0) !important;
transition: transform 0.5s ease-in-out, opacity 0.5s ease-in-out !important;
}
/*--------------------------------*/
#appMenu-popup {
outline: 2px solid cyan;
outline-offset: -2px !important;
}
#appMenu-popup {
opacity: 0 !important;
transform: translateY(-100%) !important;
}
#appMenu-popup[panelopen] {
opacity: 1 !important;
transform: translateY(0) !important;
transition: transform 0.5s ease-in-out, opacity 0.5s ease-in-out !important;
}
/*--------------------------------*/
#unified-extensions-panel {
outline: 2px solid green;
outline-offset: -2px !important;
}
#unified-extensions-panel {
opacity: 0 !important;
transform: translateY(-100%) !important;
}
#unified-extensions-panel[panelopen] {
opacity: 1 !important;
transform: translateY(0) !important;
transition: transform 0.5s ease-in-out, opacity 0.5s ease-in-out !important;
}
/*--------------------------------*/
/*funzt nur beim ersten mal nach Neustart*/
#textbox-contextmenu {
outline: 2px solid goldenrod;
outline-offset: -2px !important;
}
#textbox-contextmenu:not([hasbeenopened = "true"]) {
opacity: 0 !important;
transform: translateY(-100%) !important;
}
#textbox-contextmenu[hasbeenopened = "true"] {
opacity: 1 !important;
transform: translateY(0) !important;
transition: transform 0.5s ease-in-out, opacity 0.5s ease-in-out !important;
}
/*--------------------------------*/
/*funzt nur beim ersten mal nach Neustart*/
.textbox-contextmenu {
outline: 2px solid firebrick;
outline-offset: -2px !important;
}
.textbox-contextmenu:not([hasbeenopened = "true"]) {
opacity: 0 !important;
transform: translateY(-100%) !important;
}
.textbox-contextmenu[hasbeenopened = "true"] {
opacity: 1 !important;
transform: translateY(0) !important;
transition: transform 0.5s ease-in-out, opacity 0.5s ease-in-out !important;
}
/*--------------------------------*/
#widget-overflow {
outline: 2px solid purple;
outline-offset: -2px !important;
}
#widget-overflow {
opacity: 0 !important;
transform: translateY(-100%) !important;
}
#widget-overflow[panelopen] {
opacity: 1 !important;
transform: translateY(0) !important;
transition: transform 0.5s ease-in-out, opacity 0.5s ease-in-out !important;
}
/*Submenus Tab, Context*/
menu:not( menubar > menu) > menupopup:not(#usercssloader-menupopup) {
outline: 2px solid teal;
outline-offset: -2px !important;
}
menu:not( menubar > menu) > menupopup:not(#usercssloader-menupopup) {
opacity: 0 !important;
transform: translateX(var(--trans_x)) !important;
}
menu:not( menubar > menu)[open] > menupopup:not(#usercssloader-menupopup) {
opacity: 1 !important;
transform: translateX(0) !important;
transition: transform 0.5s ease-in-out, opacity 0.5s ease-in-out !important;
}
/*--------------------------------*/
:is(toolbarbutton, menubar > menu) > menupopup {
outline: 2px solid black;
outline-offset: -4px !important;
}
:is(toolbarbutton, menubar > menu) > menupopup {
opacity: 0 !important;
transform: translateY(-100%) !important;
}
:is(toolbarbutton, menubar > menu)[open] > menupopup {
opacity: 1 !important;
transform: translateY(0) !important;
transition: transform 0.5s ease-in-out, opacity 0.5s ease-in-out !important;
}
/*--------------------------------*/
#bookmarks-menu-button > menupopup {
outline: 2px solid magenta;
outline-offset: -2px !important;
}
#bookmarks-menu-button > menupopup {
opacity: 0 !important;
transform: translateY(-100%) !important;
}
#bookmarks-menu-button[open] > menupopup {
opacity: 1 !important;
transform: translateY(0) !important;
transition: transform 0.5s ease-in-out, opacity 0.5s ease-in-out !important;
}
Alles anzeigen
BrokenHeart, ich habe dieses Script angepasst und sehe keine Probleme (Linux), auch nicht mit #bookmarks-menu-button oder #bookmarksMenuPopup (oder erkenne ich das Problem nicht?).
Die Icons befinden sich in diesem Beitrag.
Edit (05.07.25): doppelten EventListener gelöscht; funktioniert auch so.
// JavaScript Document
// M_NumOfBookmfold+Bookm_lite.uc.js
// FF 140
// Fork of @BrokenHeart's code from https://www.camp-firefox.de/forum/thema/136572-nur-die-anzeige-der-ordner-lesezeichenanzahl-in-einer-anderen-farbe-darstellen/?postID=1269879#post1269879
// Das Script erstellt einen Zusatz zu Menüeinträgen in Bookmark-Ordner-Dropdowns.
// Der Zusatz besteht aus der [Anzahl der beinhaltenden Ordner sowie aus der Anzahl der beinhaltenden Lesezeichen]. Als trennendes Element zwischen Ordner und Lesezeichen wird ein Ordnersymbol als Icon eingefügt.
// Sollte kein Ordner sowie kein Lesezeichen vorhanden sein (der Ordner ist leer), erscheint ein Trashsymbol (als Aufforderung zur Löschung des leeren Ordners) und das Pfeil-Symbol(Twisty) wird ausgeblendet.
(function() {
if (!window.gBrowser)
return;
setTimeout(function() {
setFunction();
},50);
function setFunction() {
const
// ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
iconFold = '16SWfolder-10_moz.svg',
iconFoldOv = '16SWfolder-12_moz.svg',
iconTrash = '16_Trash-03_moz.svg',
iconFillFold = '#b0b0b0',
iconFillFoldOv = 'currentColor',
iconFillTrash = '#f02228',
iconFillTrashOv = 'currentColor',
fontCol = '#b0b0b0',
fontColOv = 'currentColor',
iconPath = '/chrome/icons/',
// ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));//const end
const css =`
.countClass {
justify-content: space-between !important;
}
.countClass::after {
content: attr(data-value);
color: ${fontCol};
padding-right: 3px;
background-image: url('${curProfDir}${iconPath}${iconFold}');
fill: ${iconFillFold};
background-repeat: no-repeat;
background-size: 13px 13px;
background-position: right 22px center;
margin-right: -17px !important;
}
menu:hover > .countClass::after {
color: ${fontColOv};
fill: ${iconFillFoldOv};
}
.countClass[data-value^='\xa0']::after {
background-image: none;
}
menu:hover > .countClass:not([data-value^='\xa0'])::after {
background-image: url('${curProfDir}${iconPath}${iconFoldOv}');
}
menu:has( > .countClass[data-value$='\xa0'][data-value^='\xa0'])::after {
fill-opacity: 1 !important;
background-image: url('${curProfDir}${iconPath}${iconTrash}') !important;
fill: ${iconFillTrash} !important;
height: 13px !important;
width: 13px !important;
scale: 1.07 !important;
margin-right: 11px !important;
}
menu:hover:has( > .countClass[data-value$='\xa0'][data-value^='\xa0'])::after {
fill: ${iconFillTrashOv} !important;
}
#bookmarksMenuPopup > menu > .countClass::after {
background-position: right 29px center;
padding-right: 10px;
}
`;
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);
//----
const bmbMenu = document.getElementById('bookmarks-menu-button');
const bookMenu = document.getElementById('bookmarksMenu');
const persToolBar = document.getElementById('PersonalToolbar');
if(bmbMenu)
bmbMenu.addEventListener('popupshown', onPopupShowing
);
if(bookMenu){
bookMenu.addEventListener('popupshown', onPopupShowing )
};
if(persToolBar){
persToolBar.addEventListener('popupshowing', onPopupShowing )
};
};
function onPopupShowing(aEvent) {
const popup = aEvent.originalTarget;
for (let item of popup.children) {
if (item.localName != 'menu' || item.id?.startsWith('history'))
continue;
setTimeout(() => {
let itemPopup = item.menupopup;
itemPopup.hidden = true;
itemPopup.collapsed = true;
itemPopup.openPopup();
itemPopup.hidePopup();
let menuitemCount = 0;
let menuCount = 0;
for (let subitem of itemPopup.children) {
if (subitem.classList.contains('bookmark-item') && !subitem.disabled && !subitem.hidden) {
if (subitem.localName == 'menuitem') {
menuitemCount++;
}
else
if (subitem.localName == 'menu') {
menuCount++;
}
}
}
itemPopup.hidden = false;
itemPopup.collapsed = false;
let label = item.childNodes[1]; //[1]links [3]rechts
label.classList.add('countClass');
let menuDiv = '\xa0\xa0\xa0';
if (menuCount == 0) {
menuDiv = '\xa0\xa0';
menuCount ='\xa0';
}
if (menuitemCount == 0) {
menuitemCount ='\xa0';
}
if (menuCount > 0 && menuitemCount == 0) {
menuitemCount ='0';
}
if (menuCount > 0 && menuitemCount == '0') {
menuitemCount = '\xa0‒';
}
let strCountOut = String(menuCount).padStart(2,'') + menuDiv + String(menuitemCount).padStart(2,'\xa0');
label.setAttribute('data-value', strCountOut);
}, 1000);
}
}
//----
})();
Alles anzeigen
Nur mal so, reicht hier so auch aus:
Werde ich so gleich mal ausprobieren!
Doppelt hält besser; siehe Zeile 12-22.
Beispiel Lesezeichenpopups:
Läuft! Das will-change habe ich auskommentiert; ohne läuft es auf meinem Recher einfach besser. Nette Spielerei, mal sehn' wie lange es hält.
(function () {
if (!window.gBrowser) return;
document.addEventListener("popupshowing", function (e) {
let popup = e.target;
if (popup.localName !== "menupopup") return;
let anchor = popup.anchorNode;
if (!anchor || typeof anchor.screenX === "undefined") return;
let flippedH = popup.screenX < anchor.screenX;
popup.classList.remove('flipper');
if (flippedH) {
popup.classList.add('flipper');
}
});
const sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);
const uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(`
menu > menupopup {
--trans_x: -100%;
}
menu > menupopup.flipper {
--trans_x: 100%;
}
#PlacesToolbar .bookmark-item > menupopup {
/* will-change: transform, opacity !important;*/
opacity: 0 !important;
transform: translateY(-100%) !important;
}
#PlacesToolbar .bookmark-item[open] > menupopup {
opacity: 1 !important;
transform: translateY(0) !important;
transition: transform 0.9s ease-in-out, opacity 0.9s ease-in-out !important;
}
#PlacesToolbar .bookmark-item menu > menupopup {
/* will-change: transform, opacity !important;*/
opacity: 0 !important;
/* transform: translateX(-100%) !important; */
transform: translateX(var(--trans_x)) !important;
}
#PlacesToolbar .bookmark-item menu[open] > menupopup {
opacity: 1 !important;
transform: translateX(0) !important;
transition: transform 0.9s ease-in-out, opacity 0.9s ease-in-out !important;
}
`), null, null);
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
})();
Alles anzeigen
Die Positionierung funktioniert ab dem zweiten Öffnen eines Popups.
Moin, das könnte an popupshown statt popupshowing liegen.
Welche empfiehlst du?
Dies macht optisch was her, ist aber überflüssig und dient nur als Beispiel.
Ansonsten gehe ich konform mit:
Verzichte, worauf du kannst.
// JavaScript Document
// LoadingBar.uc.js
// Location Bar Enhancer5.1; Loading Bar0.3.0
// Firefox 140
(function loadbar(){
if (location.href !== 'chrome://browser/content/browser.xhtml') return;
var cssStr = `
#urlbar-background {
background-image: repeating-linear-gradient(-60deg, rgba(71,71,71,0), rgba(74,74,74,0) 4px, rgba(74,74,74,1) 4px, rgba(74,74,74,1) 8px), linear-gradient(to right, rgba(204, 82, 0,0) 0%, rgba(204, 82, 1) 100%);
background-size:0 0;
background-repeat:repeat-x, no-repeat;
transition: background-size 0ms ease-in-out 0ms;
}
#urlbar-background:not([style="background-size: 0% 100%;"]) { transition: background-size 300ms ease-in-out 0ms;
animation: progress-bar-stripes 5000ms linear infinite;
}
@keyframes progress-bar-stripes {
from {
background-position: 0 0;
}
to {
background-position: 470px 0;
}
}
`.replace(/\s{2,}|\r|\n/,"");
var style = document.createProcessingInstruction("xml-stylesheet", "type=\"text/css\"" + " href=\"data:text/css;base64," + btoa(cssStr) + "\"");
var mainW = document.getElementById("main-window");
document.insertBefore(style, mainW);
function main(window) {
var {document, gBrowser} = window;
function $(id) { return document.getElementById(id) };
var urlbar = $("urlbar-background");
let pageProgress = 0;
let async = makeWindowHelpers(window).async;
var LoadingBar = {
listener: {
onChangeTab: function(e) {
urlbar.style.backgroundSize = '0% 100%';
pageProgress = 0;
},
onProgressChange: function(aBrowser,webProgress,request,curSelfProgress,maxSelfProgress,curTotalProgress,maxTotalProgress) {
if (gBrowser.contentDocument === aBrowser.contentDocument) {
var val = (curTotalProgress-1)/(maxTotalProgress-1);
pageProgress = val;
urlbar.style.backgroundSize = (100*val) + '% 100%';
if (val > 0.9)
async(function() {
if (pageProgress > 0.95)
urlbar.style.backgroundSize = '100% 100%';
}, 1000);
}
},
onStateChange: function() {
if (pageProgress > 0.95){
async(function() {
urlbar.style.backgroundSize = '0% 100%';
pageProgress = 0;
}, 1000);
}else{
urlbar.style.backgroundSize = '0% 100%';
}
}
}
};
gBrowser.tabContainer.addEventListener('TabSelect',LoadingBar.listener.onChangeTab,false);
gBrowser.addTabsProgressListener(LoadingBar.listener);
unload(function() {
gBrowser.tabContainer.removeEventListener('TabSelect',LoadingBar.listener.onChangeTab,false);
gBrowser.removeTabsProgressListener(LoadingBar.listener);
}, window);
}
watchWindows(main, "navigator:browser");
function runOnLoad(window, callback, winType) {
window.addEventListener("load", function() {
window.removeEventListener("load", arguments.callee, false);
if (window.document.documentElement.getAttribute("windowtype") == winType)
callback(window);
}, false);
}
function runOnWindows(callback, winType) {
function watcher(window) {
try {
callback(window);
}
catch(ex) {}
}
let browserWindows = Services.wm.getEnumerator(winType);
while (browserWindows.hasMoreElements()) {
let browserWindow = browserWindows.getNext();
if (browserWindow.document.readyState == "complete")
watcher(browserWindow);
else
runOnLoad(browserWindow, watcher, winType);
}
}
function watchWindows(callback, winType) {
function watcher(window) {
try {
callback(window);
}
catch(ex) {}
}
runOnWindows(callback, winType);
function windowWatcher(subject, topic) {
if (topic == "domwindowopened")
runOnLoad(subject, watcher, winType);
}
Services.ww.registerNotification(windowWatcher);
unload(function() { Services.ww.unregisterNotification(windowWatcher) });
}
function unload(callback, container) {
let unloaders = unload.unloaders;
if (unloaders == null)
unloaders = unload.unloaders = [];
if (callback == null) {
unloaders.slice().forEach(function(unloader) { unloader() });
unloaders.length = 0;
return null;
}
if (container != null) {
container.addEventListener("unload", removeUnloader, false);
let origCallback = callback;
callback = function() {
container.removeEventListener("unload", removeUnloader, false);
origCallback();
}
}
function unloader() {
try {
callback();
}
catch(ex) {}
}
unloaders.push(unloader);
function removeUnloader() {
let index = unloaders.indexOf(unloader);
if (index != -1)
unloaders.splice(index, 1);
}
return removeUnloader;
}
function makeWindowHelpers(window) {
let {clearTimeout, setTimeout} = window;
function async(callback, delay) {
delay = delay || 0;
let timer = setTimeout(function() {
stopTimer();
callback();
}, delay);
function stopTimer() {
if (timer == null)
return;
clearTimeout(timer);
timer = null;
}
}
return {
async: async,
};
}
})();
Alles anzeigen
Wenn man es richtig macht, ist es ein geringer Aufwand mehrere Dateien in zwei Ordner zu verschieben um ein Tab weg zu bekommen
und es gibt soviele schöne Scripte die du ab jetzt nutzen kannst!
Ich kann das nicht testen, aber der Anfang könnte so sein?
// ==UserScript==
// @name New Userscript
// @namespace http://tampermonkey.net/
// @version 2025-06-07
// @description try to take over the world!
// @author You
// @match https:/fritz.box
// @match http:/fritz.box
// @icon none
// @grant none
// ==/UserScript==
(function() {
'use strict';
document.getElementById('uiEntryname-input').value = 'Spam';
...
document.getElementById('uiNumbernew1-input').focus();
...
})();
Alles anzeigen
Sonst muss sich wohl mal ein Profi damit beschäftigen...
ein Skript für folgende Funktion erstellen.
Das geht nur, wenn der 'script erstellende' auch die gleiche Vers. deiner Box hat um mit den Entwicklertools darauf zugreifen zu können (Info der Vers. wäre gut); meine FB! ist einfach zu alt; leider kann ich deinen Wunsch nicht erfÜlen....
Nun mach mal Schlusss...und handle Deine Agressionen...
Meine Meinung:
Die meisten Anpassungen der Bastler innerhalb einer js-Datei betreffen 'css'. Es spricht nichts dagegen, Dateien einfach nur mit dem gleiche Dateinamen aber unterschiedlichen Erweiterung zu bennenen! Der Bezug ist aufgrund des gleichen Dateinamens gegeben (die Dateien mit der Erweiterung .css/.js bleiben in ihren dafür vorgesehene Habitaten/Ordnern). Soweit-sogut, was aber wenn js direkt Einfluss auf css nimmt, z.B. durch Variablen (Beispiel hier)? Mein Fazit: es ist immer eine 'Fall zu Fall' Entscheidung.