JavaScript, Greasemonkey und Datenübergabe

torax13

Erfahrenes Mitglied
Hallo Allerseits,

ich hab eine mehr generelle Frage zum sinnvollen Aufbau. Gegeben:

  1. fremde Webseite, ich hab keinen Einfluss darauf
  2. GreaseMonkey Script, das jetzt schon Daten aus dem html parst und an meinen Server (Java Servlet) sendet

Nun möchte ich das gern so erweitern, das die Webseite (1.) durch das Greasemonkey erweitert wird. Die Daten dazu kommen wiederrum von meinem Server.

Leider sind JavaScript Kenntnisse noch recht beschränkt, aber man wächst ja mit seinen Aufgaben ;)

Ich seh die 2 grundlegenden Varianten:

a) Im GreaseMonkey script ist die Funktionalität zum Anreichern der Oberfläche fest drin. Nur die Daten werden vom Server agefragt.

b) Auf dem Server wird ein String erzeugt, der sowohl die Daten auch die Javascriptfunktionen enthält. Dieser String wird vom GreaseMonkey geladen und per eval() angewendet.

Bei a) stellt sich mir die Frage, wie ich die Daten bequem auf vom Server zum Client bekomm (JSON?), Dafür muss ich aber nicht ständig den Javascript code hinundher senden.

Bei b) hab ich den vorteil das sich am GreaseMonkey code kaum was ändert wird. Neue Funktionen kann ich einfach vom Server aus einbauen. Allerdings kommt mir b) irgendwie gefrickelt (also nicht so sauber) vor.

Was meint Ihr?
 
Moin,

also ich würde eindeutig a) bevorzugen.

Ich wüsste zumindest nicht, was daran einfacher ist, Code von einem entfernten Server zu laden(der ja auch erstmal irgendwie dorthin kommen muss).
Dazu kommt noch die zusätzliche Ladezeit.
 
Im Prinzip seh ich das auch so. Nur bei Variante b) weiß ich wie ich das vom Server (dort erzeug ich das Java) ins Javascript bekomm. Nur das übertragen von Javascript Variablen / Objekten ist mir nicht klar..

Gruß
 
Du kannst Objekte bequem mit folgender Syntax übertragen:
Code:
{objekteigenschaft:'eigenschaftswert'}

Anhand eines solchen Strings kannst du dann per eval() in Greasemonkey das Objekt erzeugen.

Bsp:
Code:
GM_xmlhttpRequest(
    {
      method: 'GET',
      url: 'http://doktormolle.de/grease.htm',
      onload: function(responseDetails) 
        {
           eval('objekt='+responseDetails.responseText);
           alert(objekt.Hallo);
        }
    }
);

Die grease.htm antwortet mit {Hallo:'Welt'}.
Ergebnis des Ganzen ist ein alert mit dem Inhalt der Hallo-Eigenschaft des Objektes, also Welt.
 

Neue Beiträge

Zurück