Ergebnis 1 bis 13 von 13
  1. #1
    Kerwindena ist offline Grünschnabel
    registriert
    13-01-2009
    Beiträge
    5

    Vorhandene Funktionen manipulieren

    Hallo,
    ich bin gerade dabei ein Greasemonkey Skript zu schreiben... Greasemonkey (gs abgekürze) ist eine FF-extention die auf seiten dessen uri einem bestimmten Schema entspricht ein JS-script ausführen... Folglich braucht die lösung die ich für meine 2 Probleme habe auch lediglich FF kompatibel zu sein... Also komme ich gleich zu meinen Problemen:
    Situation:
    Eine HTML-seite auf der im unteren body teil javascripte stehen... Ein script tag verweist auf eine js.datei... in dieser Datei werden einige Funktionen deklariert... mein erstes ziel ist es, eine dieser funktionen ein wenig umzuschreiben... ich habe schon 2 möglichkeiten ausprobiert... 1. die src des srcipt-tags auf eine von mir manipulierte version des javascripts umzuändern... zeigt jedoch keine reaktion... 2. eine neue, veränderte funktion zu erstellen und mit dieser dann irgendwie die alte zu überschreiben, allerdings finde ich die alte funktion nicht im dom und kann sie desshalb auch nicht überschreiben...
    problem 2 (selbige seite) ist dass einige funktionen teilweise bei problemen alerts aufrufen... (es handelt sich um ein ajax script, welches bei verbindungsfehlern alerts ausspuckt, damit das script anhält und nach einem klick auf "OK" sowieso wieder von forne anfängt)... die alerts sind also eigentlich überflüssig und verzögern nur den ablauf des scriptes.. mein zweites ziel also ist, den alert irgendwie zu unterdrücken... lösungsansatz 1 war ebenfalls einfach die funktionen die die alerts aufrufen einfach zu überschreiben... klappt leider auch wegen obig genannten problemen net... lösungsansatz 2 war eine funktion zu schreiben und mit dieser alert zu überschreiben... also schnell ein div mit der id "errorlog" erstellt...
    dann diese zeilen in mein gs-script kopiert:
    Code:
    function log_error(message){
      var agent = "";
          if(arguments[1]) agent = arguments[1];
          document.getElementById("errorlog").innerHTML += '<p style="margin: 0px; padding: 0px; padding-top: 1px; padding-bottom: 3px;"><b>' + agent + " :</b>  " + message + "</p>";
    };
    dann noch schnell den ursprünglichen alert ersetzen:
    Code:
    window._alert = window.alert;
    window.alert = log_error;
    und mit einem
    Code:
    alert('test');
    im gs-script testen und siehe da es klappt... leide musste ich kurz darauf feststellen dass dieser code allen anderen alerts des scriptes gänzlich egal war...
    um zu testen ob diese änderung nur im gs-script winkung gezeigt hat habe ich noch diesen code hinzugefügt:
    Code:
    window.setInterval(function() { alert('test2') }, 1000);
    erstaunlicherweise liefert dies kein alert sondern eine zeile im errorlog... und jetzt weiß ich auch nicht mehr weiter... wäre nett wenn mir jemand beine denkfehler aufzeigen würde...
    mfg, Kerwindena

  2. #2
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.664

    AW: Vorhandene Funktionen manipulieren

    denn script wird sicher erst nach den scripten der originalseite ausgeführt. daher zieht das alert z.b. im onload nicht. nach 1 sec ist dann dein script an die reihe geommen und alle weiteren alert's (asynchrone funktionen) ziehen.
    ist aber reine vermutung.

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

    AW: Vorhandene Funktionen manipulieren

    Ja, greasemonkey Skript werden meines Wissen nach DOMContentLoaded gestartet

    Nachtrag: DOMContentLoaded - GreaseSpot

  4. #4
    Kerwindena ist offline Grünschnabel
    registriert
    13-01-2009
    Beiträge
    5

    AW: Vorhandene Funktionen manipulieren

    Jo schonmal herzlichen dank für die schnellen antworten...Dass das gs-script zu erst ablaufen kann, wenn der dom-content bereits aufgebaut ist, ist ja zwingend notwendig weil ich ja auch elemente aus dem dom ändern muss... aber für mich ist dadurch nur noch nicht erklärbar, dass der alert im gs-script und der setinterval-alert auch aus dem gs-script beide das tun, was sie sollen, aber davor, danach oder dabei bleiben die alerts der funktionen aus der datei normale standart alerts und stoppen das script... naja wenn wer noch ne idee hat dan meldet euch bitte...
    mfg, Kerwindena

  5. #5
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.664

    AW: Vorhandene Funktionen manipulieren

    ach der setinterval-alert kommt auch aus deinem gs-script. und danach bleiben die alerts der funktionen aus der datei auch normale standart alerts?

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

    AW: Vorhandene Funktionen manipulieren

    Hast du eigentlich mal in die Fehlerkonsole geschaut?

  7. #7
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.664

    AW: Vorhandene Funktionen manipulieren

    Zitat Zitat von ein schlauer Beitrag anzeigen
    Ja, greasemonkey Skript werden meines Wissen nach DOMContentLoaded gestartet

    Nachtrag: DOMContentLoaded - GreaseSpot
    dann sollten eigentlich nur scripte die im head bzw. body stehen das problem haben.
    wenn das so nicht der fall ist, bleibt eigentlich nur noch übrig, daß die scripte in einem eigenem context laufen, und dein window objekt in deinem script eine eigene property an diesem objekt ist, aber nicht das original window objekt.

  8. #8
    Kerwindena ist offline Grünschnabel
    registriert
    13-01-2009
    Beiträge
    5

    AW: Vorhandene Funktionen manipulieren

    @hesst:
    so siehts aus meine testfunktionen habe ich alle über das gs script eingebunden, weil ich sonst keinen zugriff auf die dateien habe...
    @ein schlauer:
    türlich hab ich in die fehlerkonsole geschaut... das gs-script erzeugt weder weder fehler, noch warnungen... und das restliche script erzeudt folgenden fehler (hat es aber schon immer gemacht):
    Code:
    Fehler: _gat is not defined
    Quelldatei: http://beispieldomain.com/beispieldatei.php
    Zeile: 129
    der quellcode dazu aus der non-gs-datei:
    Code:
    125		if (window.XMLHttpRequest) {
    126			request = new XMLHttpRequest(); // Mozilla, Safari, Opera
    127                         if(request.overrideMimeType) request.overrideMimeType('text/plain'); // (text/plain, text/html, text/xml)
    128		} else if (window.ActiveXObject) {
    129			try {
    130				request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
    131			} catch (e) {
    132				try {
    133					request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
    134				} catch (e) {}
    135			}
    136		}
    außerdem hab ich diesen fehler ersteinmal als belanglos beiseite geschoben...
    naja wenn euch nochwas einfallen würd... wär cool... ansonsten euch beiden schonmal danke und bd...

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

    AW: Vorhandene Funktionen manipulieren

    Also ich hab den Code, den du uns oben gezeigt hast in einem GM Skript ausprobiert. Es hat seltsamerweise zuerst einen Fehler geworfen, der darauf hindeutete, dass du unsafeWindow statt window benutzen solltest, aber mittlerweile läuft dein Skript in der Orginalfassung ohne Fehlermeldung.

  10. #10
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.664

    AW: Vorhandene Funktionen manipulieren

    Zitat Zitat von ein schlauer Beitrag anzeigen
    aber mittlerweile läuft dein Skript in der Orginalfassung ohne Fehlermeldung.
    bis auf die scripte die vorher laufen! die dürften unbeinflußt bleiben.

  11. #11
    Kerwindena ist offline Grünschnabel
    registriert
    13-01-2009
    Beiträge
    5

    AW: Vorhandene Funktionen manipulieren

    dazu mal ne frage:
    was genau funktioniert jetzt unter welchen mständen und inwiefern bringt mich das bei meinem problem weiter??? hab gerad iwie den überblick verloren... syr

  12. #12
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.664

    AW: Vorhandene Funktionen manipulieren

    Zitat Zitat von Kerwindena Beitrag anzeigen
    dazu mal ne frage:
    was genau funktioniert jetzt unter welchen mständen und inwiefern bringt mich das bei meinem problem weiter??? hab gerad iwie den überblick verloren... syr
    soweit ich den schlauen verstanden habe geht es bei ihm. sollte also auch bei dir gehen. nur wenn die scripte beim DOMContentLoaded-event geladen weden, dann kannst du in scripten die vorher gelaufen sind zwar die funktionen ändern, aber die scripte sind schon durch, und keiner ruft deine geänderten funktionen auf.

  13. #13
    Kerwindena ist offline Grünschnabel
    registriert
    13-01-2009
    Beiträge
    5

    AW: Vorhandene Funktionen manipulieren

    naja tut mir leid dass so lange nichts kam... war krank... naja hat mir alles jetzt net so viel weitergeholfen... werde jetzt einfach ein zweites script über firefox´s data: einfügen... mit funktionen, die andere namen haben und dann im script alles manuell auf diese funktionen umleiten.... trotzdem danke

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 06-06-2007, 09:09
  2. Problem beim Zusammenführen von zwei Funktionen
    Von lyc8069 im Forum JavaScript
    Antworten: 3
    Letzter Beitrag: 24-02-2007, 13:50
  3. $_SESSION[] Variable im Link manipulieren
    Von Lifthrasil im Forum Serverseitige Programmierung
    Antworten: 0
    Letzter Beitrag: 07-05-2006, 11:48
  4. Antworten: 15
    Letzter Beitrag: 12-11-2005, 00:22
  5. Antworten: 17
    Letzter Beitrag: 24-01-2004, 14:37

Lesezeichen

Berechtigungen

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