1. Nachrichten
  2. Forum
    1. Unerledigte Themen
    2. Forenregeln
  3. Spenden
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. camp-firefox.de
  2. EffPeh

Beiträge von EffPeh

  • userChrome.js Scripte für den Fuchs (Diskussion)

    • EffPeh
    • 1. November 2017 um 16:01
    Zitat von 2002Andreas


    Das sollte aber auch mit einem Code passen....nur ich kann das nicht :oops:


    Nee, also eigentlich nur dann, wenn die Anzahl der Elemente "menuitem" und "menu" gleich wären.
    Dann könnte man das ganze in einer Schleife abhandeln. Aber da dies unwahrscheinlich ist, muss man das Spiel halt zweimal durchlaufen lassen. :)

  • userChrome.js Scripte für den Fuchs (Diskussion)

    • EffPeh
    • 1. November 2017 um 15:41

    andreas, du musst dir einfach nur die jeweiligen Tags suchen und dann nach dem selben Schema wie in meinem Code vorgehen. :)

  • userChrome.js Scripte für den Fuchs (Diskussion)

    • EffPeh
    • 1. November 2017 um 15:23

    So vielleicht?... :)

    Code
    var ele = document.getElementsByTagName("menuitem");
    for (var i = 0; i < ele.length; i++) { 
        var status = ele[i].removeAttribute("accesskey");
    }
  • start.me Erfahrungen

    • EffPeh
    • 1. November 2017 um 15:04

    Vorab: Ich kenne start.me nicht.
    Ich habe mir einmal die Beispiel-Seiten angeschaut und auf den ersten Blick sieht es für mich wie ein erweitertes Speed Dial aus.
    Diese Erweiterungen wie etwa "Latest News", "To do" oder "Weather" sind für mich persönlich allerdings völlig uninteressant, da diese Dinge nicht relevant sind oder ich dazu andere Anwendungen nutze. Neu ist an der Geschichte sowieso nichts.
    Es gibt sicherlich Anwender, die so etwas mögen, auf mich wirkt das Angebot aber nicht attraktiv.

  • Userscript und Storage

    • EffPeh
    • 1. November 2017 um 02:22

    Es gibt keine doofen Fragen. :)

    Mit Hilfe des CSS-Switchers kann ich zwischen verschiedenen Farbvariationen für das Styling des Browsers auswählen.
    Gewöhnlich sieht eine Farbangabe so aus:

    Code
    background: red;
    border-color: #ff0000;
    color: rgb(255,0,0);
    usw.

    Das ist okay. Geiler ist es aber, wenn man sämtliche Farbangaben (oder auch andere häufig genutzte Styles) übersichtlich per Variablen definiert.
    Das schaut dann so aus:

    Code
    :root {
    	--var-rot: rgb(255,0,0);
    	--var-gelb: yellow;
    	--var-blau: #0000ff;
    	--what-ever: ...
    }


    Diese Definitionen lassen sich jetzt überall im CSS einsetzen:

    Code
    background: var(--var-rot);
    border-color: var(--var-gelb);

    Der Vorteil dabei ist, das ich bei späteren Änderungswünschen nicht im gesamten CSS die Änderung vornehmen muss, sondern einfach nur die Variable ändere.
    Man kann sämtliche CSS-Definitionen in eine Datei schreiben, also in die userChrome.css. Man kann allerdings sein CSS auch zwecks Überschaubarkeit auf mehrere Dateien aufteilen und dann in der Hauptdatei einbinden. Das mache ich und bei mir schaut die userChrome.css so aus:

    Code
    /* CSS Variables */
    @import url('fp-switch-0.css');
    /* Ordinal Group Elements */
    @import url('fp-ordinal.css');
    /* WebExtensions */
    @import url('fp-extensions.css');
    /* Navigation */
    @import url('fp-navigator-toolbox.css');
    /* Tabs */
    @import url('fp-tabs-toolbar.css');
    /* Bookmarks */
    @import url('fp-personal-toolbar.css');
    /* URL Bar */
    @import url('fp-nav-bar.css');
    /* Sidebar */
    @import url('fp-sidebar.css');
    /* Statusbar */
    @import url('fp-statusbar.css');
    Alles anzeigen

    In meiner fp-switch-0.css sind also sämtliche Farbangaben als Variablen definiert. Jetzt habe ich allerdings nicht nur diese eine, sondern mehrere solcher Dateien mit Farbangaben. Jede dieser Dateien präsentiert ein Color Scheme.
    Und mit Hilfe des CSS-Switchers, den ich mir gebastelt habe, kann ich nun diese Dateien dynamisch nachladen, zwischen den Farbschemen wechseln und somit die Farbgebung des Browsers nach Belieben anpassen.
    War das verständlich?... :D

  • Userscript und Storage

    • EffPeh
    • 31. Oktober 2017 um 23:52

    Öhm, aber sicher doch. :)

    Ich habe mir ja hier diesen CSS-Switcher gebastelt:
    https://www.camp-firefox.de/forum/viewtopic.php?f=16&t=122197

    Und damit ich mich nicht nach jedem Neustart des Browsers immer wieder zu meinem aktuell genutzten Style durchswitchen muss, habe ich den so umgeschrieben, das bei jedem Switch die jeweilige ID der CSS-Datei in eine gewöhnliche Textdatei direkt in chrome gespeichert wird. Der zuletzt genutzte Style wird also bei einem Neustart wieder eingebunden.

    Dazu benutze ich diese Funktion:

    Code
    var writeSwitchID = function(data) {
    	Components.utils.import("resource://gre/modules/NetUtil.jsm");
    	Components.utils.import( 'resource://gre/modules/FileUtils.jsm' );
    				let file = Services.dirsvc.get( 'UChrm' , Components.interfaces.nsIFile );
    				file.appendRelativePath( 'switchpref.txt' );
    	var ostream = FileUtils.openSafeFileOutputStream(file);
    
    
    	var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].
    					createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
    	converter.charset = "UTF-8";
    	var istream = converter.convertToInputStream(data);
    
    
    	NetUtil.asyncCopy(istream, ostream, function(status) {
    		if (!Components.isSuccessCode(status)) {
    			return;
    		}
    	});
    };
    Alles anzeigen

    Um die gespeicherte ID beim Browserstart abzurufen, benutze ich das hier:

    Code
    var readSwitchID = function() {
    	Components.utils.import("resource://gre/modules/NetUtil.jsm");
    	Components.utils.import( 'resource://gre/modules/FileUtils.jsm' );
    				let file = Services.dirsvc.get( 'UChrm' , Components.interfaces.nsIFile );
    				file.appendRelativePath( 'switchpref.txt' );
    	if (file.exists()) {
    		var data = "";
    		var fstream = Components.classes["@mozilla.org/network/file-input-stream;1"].
    		createInstance(Components.interfaces.nsIFileInputStream);
    		var cstream = Components.classes["@mozilla.org/intl/converter-input-stream;1"].
    		createInstance(Components.interfaces.nsIConverterInputStream);
    		fstream.init(file, -1, 0, 0);
    		cstream.init(fstream, "UTF-8", 0, 0);
    		let str = {};
    		let read = 0;
    		do { 
    			read = cstream.readString(0xffffffff, str);
    			data += str.value;
    		} while (read != 0);
    		cstream.close();
    		var switchID = Number(data) - 1;
    		if( typeof( switchID ) === 'undefined' ) { switchID = -1; }
    		return switchID;
    	} else {
    		return -1;
    	}
    };
    Alles anzeigen


    Mehr dazu hier bei MDN: https://developer.mozilla.org/en-US/Add-ons/…ippets/File_I_O
    Die Read-Version musste ich allerdings umschreiben, weil die MDN-Version einen Syntax-Fehler produziert.


    Die Switch-Funktion selbst wird durch einen Button ausgelöst und schaut mittlerweile so aus:

    Code
    try {
    	CustomizableUI.createWidget({
    		id: "fp-switch",
    		sid: readSwitchID(),
    		defaultArea: CustomizableUI.AREA_NAVBAR,
    		removable: true,
    		label: "Switch Browser Color Scheme",
    		tooltiptext: "Switch Browser Color Scheme",
    		onClick: function() {
    			this.sid++;
    			if( this.sid > countSwitch() ) { this.sid = 0; }
    			var switchFile = switchPrefix + this.sid + '.css';
    			writeSwitchID( this.sid );
    			document.getElementById('fp-switch').setAttribute('tooltiptext', 'Color Scheme : '+ switchFile);
    			var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"]
    							.getService( Components.interfaces.nsIStyleSheetService );
    			var ios = Components.classes["@mozilla.org/network/io-service;1"]
    							.getService( Components.interfaces.nsIIOService );
    
    
    			Components.utils.import( 'resource://gre/modules/FileUtils.jsm' );
    			let file = Services.dirsvc.get( 'UChrm' , Components.interfaces.nsIFile );
    			file.appendRelativePath( switchFile );
    			var fileURL = Services.io.getProtocolHandler( 'file' ).QueryInterface( Ci.nsIFileProtocolHandler ).getURLSpecFromFile( file );
    			var uri = ios.newURI( fileURL , null , null );
    			sss.loadAndRegisterSheet( uri , sss.AGENT_SHEET );
    
    
    		}
    	});
    } catch (e) {
    	Components.utils.reportError(e);
    };
    Alles anzeigen

    Am Ende meines UserScripts löse ich einmal die click()-Funktion des Buttons aus, damit das zuletzt benutzte CSS-File eingebunden wird:

    Code
    document.getElementById('fp-switch').click();
  • html source code

    • EffPeh
    • 31. Oktober 2017 um 19:07

    Also es ist mir nach wie vor nicht klar, was du eigentlich machen willst. Der Quellcode von HTML-Seiten ist offen einsehbar. Und alles andere, was Webseiten angeht, kann man über die Developer Tools einsehen.
    Die findest du im Menü unter Werkzeuge. :)

  • Nicht antwortendes Script: chrome://browser/content/browser.js:8109

    • EffPeh
    • 31. Oktober 2017 um 16:47

    Jaaaaa!!! Genau das hatte ich im Sinn, denn ich bin böse, gemein und hinterhältig... :lol::lol::lol:
    OMG... :roll:

  • Nicht antwortendes Script: chrome://browser/content/browser.js:8109

    • EffPeh
    • 31. Oktober 2017 um 16:01

    Ich schätze, deine Chancen auf eine befriedigende Antwort fällt mit jedem weiteren post von dir weiter... :P:D

  • Nicht antwortendes Script: chrome://browser/content/browser.js:8109

    • EffPeh
    • 31. Oktober 2017 um 15:52

    Deine Frage lässt sich so gar nicht beantworten, weil hier niemand Hellseher ist.
    Keine Angaben zu Browser, AddOns, System...

  • Nicht antwortendes Script: chrome://browser/content/browser.js:8109

    • EffPeh
    • 31. Oktober 2017 um 15:26

    Vielleicht machst du dir besser mal den Unterschied zwischen Java und Javascript klar... :P

  • html source code

    • EffPeh
    • 31. Oktober 2017 um 13:55

    Was genau hast du denn vor? Du wirfst hier mit Begriffen um dich, ohne das dies für mich auch nur annähernd klar wird. :)

  • Userscript und Storage

    • EffPeh
    • 30. Oktober 2017 um 19:58

    Hat sich erledigt. Habe eine andere Möglichkeit der Speicherung gefunden. :)

  • Server-Wechsel am Montag, 30.10.

    • EffPeh
    • 30. Oktober 2017 um 19:56

    Was mir gerade auffällt:
    Wenn ich oben auf "Hilfe-Forum" klicke, komme ich auf
    http:// https://www.camp-firefox.de/forum/
    obwohl ich gerade auf https:// unterwegs bin.
    Ausserdem bin ich dann nicht mehr eingeloggt.
    Soll das so? :)

  • Server-Wechsel am Montag, 30.10.

    • EffPeh
    • 30. Oktober 2017 um 17:22

    Glückwunsch zum Umzug. Scheint ja problemlos verlaufen zu sein. :)

  • Userscript und Storage

    • EffPeh
    • 30. Oktober 2017 um 14:01

    Ja, das war missverständlich. :)
    Ich meine die userChrome.js. Ich benötige eine Funktion, die es erlaubt eine Variable zu speichern und wieder abzurufen.
    Also so, wie man das von localStorage kennt. localStorage funktioniert aber nicht.

  • Userscript und Storage

    • EffPeh
    • 30. Oktober 2017 um 13:22

    localStorage funktioniert hier nicht, was ich mir fast schon dachte. Gibt es eine andere Möglichkeit, eine Variable dauerhaft zu speichern? Also so, das auch nach einem Neustart noch darauf zurückgegriffen werden kann? :)

    Code
    if ( typeof( Storage ) !== "undefined" ) {
    	localStorage.setItem( 'Key' , 'Value' );
    }
  • Bildschirm "Manuelles Update erforderlich"

    • EffPeh
    • 29. Oktober 2017 um 20:09

    Eben. Und was bringen 10% Sicherheit, wenn schon 1% genügt, um schädlichen Code einbringen zu können.
    Mal abgesehen davon, das diese Überprüfungen Kosten verursacht, wofür auch niemand wirklich zahlen möchte.
    Die einzige Möglichkeit wäre eine Verifizierung der Entwickler, aber ich schätze, das dies nicht jeden Entwickler begeistern würde.

  • Bildschirm "Manuelles Update erforderlich"

    • EffPeh
    • 29. Oktober 2017 um 20:00

    Also ich glaube nicht, das es sicherheitstechnisch ausreichend ist, nur die URLs in den Berechtigungen zu prüfen.
    Was ist mit den URLs, die dort nicht eingetragen sind?

  • Videounterbrechungen beim raustabben

    • EffPeh
    • 29. Oktober 2017 um 19:49

    Habe ich doch. Bei mir kommt keine Werbung.

Unterstütze uns!

Jährlich (2025)

108,6 %

108,6% (705,72 von 650 EUR)

Jetzt spenden
  1. Kontakt
  2. Datenschutz
  3. Impressum
Community-Software: WoltLab Suite™
Mastodon