Ergebnis 1 bis 5 von 5
  1. #1
    dispy ist offline Jungspund
    registriert
    17-04-2008
    Beiträge
    16

    Exclamation [Greasemonkey] eval und der Kontext

    Moin,

    Ich habe ein Greasemonkey-Script, was seine Strukturen in via GM_getValue und GM_setValue verwaltet. Diese soll es je nach Bedarf laden und dann nutzen könnten - die Strukturen sind genauer gesagt Klassen, die jeweils ihre eigene Funktion kapseln.

    Mein Problem ist, dass ich momentan versuche, die Klassen mit eval() zu laden und anschließend von Hand zu instanziieren - geht auch alles wunderbar, nur verliere ich durch eval() meinen GM-Kontext. Sprich die Klassen haben keinen Zugriff auf GM_* - Funktionen. Das ist beizeiten übel, denn einige sind definitiv darauf angewiesen.
    das Ganze ist leider zu dynamisch, um es via require zu implementieren, sonst wäre das sicherlich die Lösung der Wahl gewesen

    Nochmal als Beispielcode:
    Code:
    //Das hier wäre eine Klasse
    function (env){
       this.env = env;
       this.bla="blubb";
        .....
        this.method1= function(){.....}
    }
    Das steht einfach in einem String in den Variablen des Greasemonkey-Scripts.
    Bisher lade ich das dann so:
    Code:
    this.baseClass = eval(classDefinition);
    this.class = new baseClass(this);
    funktioniert auch wunderbar, einige Klassen, die keinen Zugriff auf GM_* brauchen, laufen ohne Probleme. Wie gesagt einige - nicht alle



    Gibt es eine andere Möglichkeit, die Klassendefinitionen aus einem String zu laden, ohne den Kontext zu verlieren?

    Vielen Dank im Voraus !

    MfG
    dispy

  2. #2
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: [Greasemonkey] eval und der Kontext

    Deine Fragestellung ist nicht nachvollziehbar. Könntest du ein konkretes Beispiel bauen, wo man dein Problem nachvollziehen kann?

  3. #3
    dispy ist offline Jungspund
    registriert
    17-04-2008
    Beiträge
    16

    AW: [Greasemonkey] eval und der Kontext

    Inhalt einer GM-Speicherstelle:
    Code:
    function (){
       this.start = function(){
         var obj = this;
         GM_xmlhttpRequest({method:'GET', url:'bla.de', onload: function(data){ obj.handle(data); } } );
    }
    
      this.handle = function(data){.....}
    }
    Code des eigentlichen GM-Scripts:
    Code:
    var class = eval(GM_getValue('mykey'));
    class.start();
    Ergebnis: Greasemonkey access violation: unsafeWindow cannot call GM_xmlhttpRequest


    Wenn das Problem noch nicht klar sein sollte einfach nochmal sagen ^^

    Ich hab jetzt ein verdammt schlechtes Workaround gefunden: im wrappenden Script habe ich jetzt ein Array demandedRequests, dem übergibt das Script die angeforderte URL und eine Referenz auf sich selbst - nach Ausführung des Scripts (alias class.start(); oben im beispielscript) schaut das wrappende Script ( was ja wirklich im GM-Script im Klartext steht) nach, ob was gewünscht wurde, und wenn ja, wird das ausgeführt.
    Das funktioniert so weit. Ist aber nen schlechtes Workaround. Wenns irgendwie ohne Workaround ginge, wäre das wesentlich besser



    MfG
    dispy
    [/code]

  4. #4
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.667

    AW: [Greasemonkey] eval und der Kontext

    gibt es vielleicht ein GM_eval?

  5. #5
    dispy ist offline Jungspund
    registriert
    17-04-2008
    Beiträge
    16

    AW: [Greasemonkey] eval und der Kontext

    Zitat Zitat von hesst Beitrag anzeigen
    gibt es vielleicht ein GM_eval?
    Nein. Das Stichwort war trotzdem gut ;P


    MfG
    dispy

    EDIT: oder auch nicht ;(
    Code:
    Note: The second argument of eval was removed. See bug 442333.
    eval MDC
    Geändert von dispy (20-01-2010 um 13:37 Uhr)

Ähnliche Themen

  1. Obfuscator & eval
    Von JSler im Forum JavaScript
    Antworten: 3
    Letzter Beitrag: 23-11-2009, 12:00
  2. evil eval - oder doch nicht?
    Von mastermueller im Forum JavaScript
    Antworten: 3
    Letzter Beitrag: 05-05-2008, 08:59
  3. json nach eval als function interpretieren
    Von iocast im Forum Serverseitige Programmierung
    Antworten: 0
    Letzter Beitrag: 14-11-2007, 20:29
  4. eval problem
    Von redreggae im Forum JavaScript
    Antworten: 14
    Letzter Beitrag: 11-05-2006, 16:29
  5. Antworten: 37
    Letzter Beitrag: 02-08-2004, 20:53

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •