Firefox-Extensions

Muss doch nochmal mit dem Host fragen...und zwar ist das ja

www.domain.de
sub.domain.de
domain.de

Diese Variante kann ja immer kommen. Aber gibts ne Möglichkeit das immer auf domain.de zu bringen?

Also habe derzeit das Problem, dass ich diese Domainvarianten immer auf domain.de bringen muss. Aber wenn ich zum Beispiel an domain.co.uk denke, dann kann ich ja auch nicht einfach mittels explode an den Punkten mir das zusammensetzen.
 
Also habe derzeit das Problem, dass ich diese Domainvarianten immer auf domain.de bringen muss. Aber wenn ich zum Beispiel an domain.co.uk denke, dann kann ich ja auch nicht einfach mittels explode an den Punkten mir das zusammensetzen.

Nicht ganz Trivial, denn um genau zu gehen ist domain.co.uk ja eine Subdomain. Denke das ginge nur durch eine Tabelle mit allen tld.

@x3ntar
Also ich sehe nicht, das dieses Script das könnte.
 
Wie wär's mit folgender Funktion:
Pathinfo für JS

Bububoomt beschreibt es leider ganz richtig...die Funktion hilft leider nichts.

Nicht ganz Trivial, denn um genau zu gehen ist domain.co.uk ja eine Subdomain. Denke das ginge nur durch eine Tabelle mit allen tld.

@x3ntar
Also ich sehe nicht, das dieses Script das könnte.

Hmh....wird mir wahrscheinlich nichts übrig bleiben. Aber gibts doch auch so Firefox-Addons, wie hier beispielsweise: https://addons.mozilla.org/de/firefox/addon/49184?src=external-01 (keine Sorge sowas solls nicht werden, aber ich brauche eben auch die URL der aktuellen Seite, die angezeigt wird). Denn die stehn doch vom Prinzip dem gleichen Problem wie ich gegenüber.
 
Die benutzen vllt auch mal selbst den Kopf und fragen nicht wegen jedem Mist, Bububoomt hat bereits eine Lösung genannt :roll:
 
ja dann schau doch einfach wie die es machen ;)
*edit*
ok die haben das alles in einer jar drin... Also mit Java
*edit*
vertan doch nicht ;)
 
Tschuldigung mit meinem Tipp ... :-D
Da war ich zu schnell, hab nur nach Pathinfo geschaut.
Auf den ersten Blick sah das gut aus!

Sonst eventuell das hier ausprobieren:

PHP:
 function get_url ()
 {
    act_url = document.domain;
    act_url = act_url.replace('www.','');
    return act_url;
}
 
ja dann schau doch einfach wie die es machen ;)
*edit*
ok die haben das alles in einer jar drin... Also mit Java
*edit*
vertan doch nicht ;)

Also hab mir das Ding mal angeschaut aber ehrlich gesagt dort nirgendwo was gefunden...oder in welcher Datei suchst du?

Tschuldigung mit meinem Tipp ... :-D
Da war ich zu schnell, hab nur nach Pathinfo geschaut.
Auf den ersten Blick sah das gut aus!

Sonst eventuell das hier ausprobieren:

PHP:
 function get_url ()
 {
    act_url = document.domain;
    act_url = act_url.replace('www.','');
    return act_url;
}

Und was machst du mit sub.domain oder gar sub.sub.domain, etc. ;)

Mein aktueller Stand:

Ich hab das mit den Domains jetzt hinbekommen. Also ich schaff es jetzt auf domain.endung zu kommen, was auch funktioniert.

Jetzt allerdings kommen noch paar Probleme mit dieser aktuellen URL:

- Denn wenn ich beispielsweise auf "In neuem Tab öffnen" mittels Rechtsklick klicke, dann machts ja nen neuen Tab im Hintergrund auf und lädt die Seite. Aber die aktuelle Seite bleibt ja eigentlich noch angezeigt. Dennoch erkennt das System diese neu geladene Seite und ändert die URL ab.

- Genauso suche ich eigentlich noch ne Lösung um beim Laden schon was zu machen. Denn jetzt bekomm ich eine URL von der Seite, lade dann eine neue und erst wenn diese fertig geladen ist, dann bekomm auch ich die neue URL. In dieser Ladezeit jedoch bleibt noch die alte URL drin.
Aber gibts ne Mögilchkeit da noch was dazwischenzuschalten? Also wie so nen runden Ladebalken oder sowas? Aber dafür bräuchte ich ja noch nen Funktionsaufruf sobald sich an der URL was ändere. Also nicht "wenn die neue Seite fertig geladen ist, dann..." sondern schon bei "wenn neue Seite geladen wird, dann..."

Hab mir zwar schon die Finger wund gesucht, aber komm da leider noch nicht ganz weiter.
 
Problem beim lesen/schreiben in Firefox Extension

Hallo,

hatte mich ja bereits vor einigen Tagen mal mit nem Problem gemeldet, was mittlerweile gelöst ist. Allerdings ein Problem hab ich noch. Das lokale abspeichern/lesen von Dateien. Hier ist mein dazu passender Code:

PHP:
function requestCached(aURL, aFunction){

//file öffnen
var file = IO.getFile("Profile", aURL + ".txt");
var stream = IO.newOutputStream(file, "text");

if (!file.exists()){

//URL festlegen
var aURLfile = "https://test.zocko.de/komponenten/websitecheck/files/de" + aURL + ".txt";

//Datei abfragen
var Requester = new XMLHttpRequest();
Requester.open("GET", aURLfile, true);
Requester.onload = function ()
{

//Datei schreiben
try {
stream.writeString(Requester.responseText);
stream.close();
} catch (ex) { alert(ex); }

aFunction("Load:" + Requester.responseText);
};
Requester.send(null);
}else{
//cache vorhanden
var str = stream.readString(200);
stream.close();
aFunction("Cache:" + str);
}
}

function somethingUseful(aText){
alert(aText);
}

Das heißt also, dass das ein Script ist, das eine Datei vom Server abfragt (läuft) und diese lokal abspeichert. Beim nächsten Aufruf wird dann wieder überprüft, ob die Datei vorhanden ist oder nicht. Wenn ja, dann soll er einfach den Cache nehmen, ansonsten die Datei global laden.

Doch genau das Lesen/Schreiben der lokalen Datei funktioniert nicht wirklich. Ich hab folgendes im developer center gefunden: https://developer.mozilla.org/en/FileGuide/IO

Aber genau diese erste Zeile geht schon nicht:
PHP:
var file = IO.getFile("Profile", aURL + ".txt");

Hab es mittels alert davor und danach versucht und das ist die Zeile die das ganze hier zum Ende bringt. Denn das alert davor läuft noch, danach leider nicht.

Habt ihr ne Idee woran es noch liegen kann? Denn ich werd da leider nichtmehr schlau draus.:roll:

Danke
 
wahrscheinlich, weil du aus Sandbox-Gründen nicht wahllos auf der Festplatte speichern darf? Wäre ja noch schöner :roll:

Firefox speichert doch alles in einer SQLite-Datenbank, vllt kann man als Extension auch da reinspeichern, wäre eine deutlich sinnvollere Persistierung von Daten als ein Textfile.
 
Zuletzt bearbeitet:
Da sag ich nur "LoL" zu der SQLite DB...
Eine Datenbank zeichnet und setzt sich aus 2 fundamentalen Dingen zusammen.

1> Dateien
2> Daten der Dateien im Speicher halten (Cachen)

sind auch noch n paar andere, aber das die wichtigsten.

Was meinst Du ist eine Datenbank grob gesehen ?
Na nix weiter als eine Anwendung die Ihre Daten aus Dateien auf der Festplatte holt.
Ob die Daten nun in *.MYC oder sonstigen Dateiendungen (*.txt) existieren, ist dem Datenbankmangementsystem völlig egal. Diese Art ist übrigens nötig, um dem "totalen" Datenverlust vorzubeugen ( Stromausfall => alle Daten aus dem Speicher weg ... Juchu wir haben Dateien, können wenn Strom wieder da is, hochfahren und neuladen )

Das Problem wird sicher an den Rechten liegen.
Wenn man auf einem System eine Lese-/Schreiboperation durchführt, sollten dafür auch die nötigen Rechte vorhanden sein. Eventuell sollte dort mal nachgeschaut werden.
 
Das Problem wird sicher an den Rechten liegen.
Wenn man auf einem System eine Lese-/Schreiboperation durchführt, sollten dafür auch die nötigen Rechte vorhanden sein. Eventuell sollte dort mal nachgeschaut werden.

Hallo,

ja das hab ich mir auch gedacht, aber die Info zu diesen IO - functions haben sich alle dazu nicht wirklich ausgelassen. Oder wie würdest du denn ein Cache-System für das Ding aufsetzen, dass nicht über ein Array oder so läuft, sondern auch auf lange Zeit vorhanden bleibt?
 
Firefoxplugins haben keine Sandbox! sie können jederzeit überall auf deiner Festplatte zugreifen.

hier mal ein Stück code mit dem ich daten in eine Datei schreibe :

Code:
var path = prefManager.getCharPref("extensions.**namedestools**.savepath");
			
			
			try 
			{
				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
			} catch (e) 
			{
				alert("Permission to save file was denied.");
			}
			
			// get the path to the user's home (profile) directory
			const DIR_SERVICE = new Components.Constructor("@mozilla.org/file/directory_service;1","nsIProperties");
			try 
			{ 
			  if (!path || path.length == 0)
				{
				  path=(new DIR_SERVICE()).get("Desk", Components.interfaces.nsIFile).path; 
				}
			} catch (e) 
			{
				alert("error");
			}

			savefile = path+savefile;
   
	    
			
			try {
				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
			} catch (e) {
				alert("Permission to save file was denied.");
			}
			var file = Components.classes["@mozilla.org/file/local;1"]
				.createInstance(Components.interfaces.nsILocalFile);
			file.initWithPath( savefile );
			if ( file.exists() == false ) 
			{
				file.create( Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 420 );
			}
			var outputStream = Components.classes["@mozilla.org/network/file-output-stream;1"]
				.createInstance( Components.interfaces.nsIFileOutputStream );
			
			outputStream.init( file, 0x04 | 0x08 | 0x20, 420, 0 );
			var output = "";
			output = "dein Inhalt"
			outputStream.write( output, output.length);

			outputStream.close();

ich habe es mal schnell angepasst und alles unwichtige was ich in meinem plugin mache rausgeworfen. savefile muss natürlich noch deklariert und definiert werden

Gruß
 
Programme werden unter Windows mit rechten versehen.
Somit auch mit einer Art Sandbox Recht.
Wenn Firefox im eingeschränkten Benutzermodus ebenfalls volle Rechte hat, ist das ok - und freut sicher die Pluginsschreiber
Stellt aber normalerweise ein Sicherheitsrisiko dar, weil darüber Code einschleusbar wäre
 
Zuletzt bearbeitet:
ich habe es mal schnell angepasst und alles unwichtige was ich in meinem plugin mache rausgeworfen. savefile muss natürlich noch deklariert und definiert werden

Gruß

Danke für den Tipp...aber hab noch 2 Probleme mit:

1. Was meinst du mit savefile deklarieren?
2. Wo gibst du denn den Namen der Datei an?
3. Und gibts für die Funktion auch ne Funktion für folgendes?:
- Überprüfen, ob die Datei vorhanden ist
- Zeitpunkt der letzten Änderung/Erstellung (egal was) lesen

Danke
 
Also es gibt für ein HTML-Dokument einen JS-Code:
PHP:
created = document.fileCreatedDate;
modified = document.fileModifiedDate;

Kannst ja mal probieren,
ob der Parameter auch für ein geöffnetes File funktioniert.