• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Textfeld in abhängigkeit der aufgerufenen Homepage

berthold5

New member
Hallo,
ich möchte ein simples Browser Addon schreiben, das mir in abhängigkeit der Internetseite ein bestimmtes Textfeld einblendet.

Also wie folgt:

Website1.de --> TEXT1 in einem Textfeld oben rechts.
Website2.com --> TEXT2 in einem Textfeld oben rechts.

Also hat jede Website ihren eigenen Begleittext.


Ich frage mich wie ich da jetzt rangehe. Ich habe zu übungszwecken ein kleines Addon mit Javascript geschrieben, dass mir oben einen Button anzeigt, der mich bei einem Klick auf eine Website leitet. (firefox tutorial)


Ich stelle mir das schematisch so vor:
JAVASCRIPT Code mit einer gewissen if abfrage und dann einer Ausgabefunktion.

if (website 1) {
alert('TEXT1');
}

Kommt man mit so einer simplen Logik weiter, oder muss man auf eine Datenbank o.ä. zurückgreifen?


mfG, Bert
 
document.getElementById("demo").innerHTML =
"Page hostname is " + window.location.hostname;

Danke für den Tipp. Da ich für jede Homepage den gleichen Text anzeigen möchte, passt dies ganz gut denke ich.

Code:
while (1) {

 switch (window.location.hostname()) {
    case "www.website1.de":
        // TEXTAUSGABE
        break;
    case "www.website2.com":
        //TEXTAUSGABE
        break;
    case "www.website3.com":
        //TEXTAUSGABE
        break;
}
}

So in etwa stell ich mir das vor. Müsste von der Idee hinkommen oder?


EDIT: Nein okay so einfach ist es nicht. window.location.hostname funktioniert hier nicht. Man muss bspw. auf "os.hostname()" des OS-Moduls zurückgreifen. Dieses scheint bei mir allerdings nicht mitinstalliert zu sein..
 
Zuletzt bearbeitet:
Ich nutze Node.js 4.3.0 und npm.

Das Addon baue ich mit jpm.

Okay also page-mod funktioniert. Ich kann mit:
Code:
pageMod.PageMod({
   include: "*.mozilla.org",
   contentScript: 'window.alert("Page matches ruleset");'
 });

..bei einer bestimmten Seite eine Meldung rausgeben.

Allerdings bekomme ich wenn ich "window.location.hostname" verwende die Meldung das window nicht definiert ist.

Und wo ich bei der Funktion oben dann die if Abfrage einbauen soll ist mir auch nicht ganz klar. Ich denke ich muss für jede Website einmal die obige Funktion hinschreiben und kann damit auf die if abfrage verzichten oder?

EDIT:

Also wenn ich mehrfach die PageMod funktion aufrufe bekomme ich einen Fehler.

Code:
var pageMod = require("sdk/page-mod");

pageMod.PageMod({
  include: "*.zeit.de",
  contentScriptFile: self.data.url("zeit.js")     
});

var pageMod2 = require("sdk/page-mod");

pageMod2.PageMod({
  include: "*.google.de",
  contentScriptFile: self.data.url("google.js")     
});

Der Fehler den ich habe ist, dass auf google.de, wie gewünscht die Ausgabe als pop up erscheint. Auf zeit.de erscheint sie jedoch durchgehen immer wieder, bis der browser schließlich abstürzt. Auf kicker.de erscheint das Pop-up hingegen etwa alle 3 Sekunden.

Ich vermute das diese Websites ihre Startseite von sich aus dauerhaft aktualisieren. (??!)
Werde es mal mit einem Textfeld, statt alert versuchen.

EDIT: Textfeld wird auf google.de angezeigt auf zeit.de jedoch nicht.

Habe den Code - hier - gefunden.
 
Zuletzt bearbeitet:
Du musst das Modul nicht für jede Seite neu laden. Einfach für jede Seite einen anderen Aufruf von PageMod(). Das Content-Script wird aber in jede window-Instanz, die auf das include-Schema passt, eingefügt. Also auch in jeden iFrame. Das wird wahrscheinlich das Problem mit der wiederholten Ausgabe erzeugen. Um das zu umgehen, könntest du im Skript prüfen, ob du dich im top-Window befindest.

Warum ein Textfeld nicht angezeigt wird, kann man ohne den Code, der es anzeigt, nicht wirklich sagen. Hast du denn irgendeine Fehlermeldung?
 
Zurück
Oben