Bei Greasemonkey musst du mit addEventlistener arbeiten, wenn ich mich nicht irre..
Ich versuche gerade mit Greasemonkey eine Navigation via Pfeiltasten der Tastatur zu erstellen hier der Code :
Vor ein paar Monaten ging noch allesCode://<script> Tag in <head> packen var scriptIns = document.createElement("script"); scriptIns.id ="func"; scriptIns.type="text/javascript"; document.getElementsByTagName("head")[0].appendChild(scriptIns); //Inhalt d. injezierten <script> Tag var cont = 'function getKeyCode(event)'; cont += '{'; cont += ' alert("test");'; cont += ' if (!event) event = window.event;'; cont += ' if (event.keyCode == 39) window.location = "'+nextLink+'";'; cont += ' else if (event.keyCode == 37) window.location = "'+prevLink+'";'; cont += '}'; //Inh. in den injezierten <script> Tag packen var scriptIns_cont = document.createTextNode(cont); document.getElementById("func").appendChild(scriptIns_cont); //Event auf <body> Tag setzen document.getElementsByTagName('body')[0].setAttribute( "onKeyup" , 'getKeyCode(event)' );und nun kann ich einfach nicht das Problem finden.
Alle Injezierungen werden lauf Firebug umgesetzt nur geschieht rein gar nix wen ich auf die Pfeiltasten drücke. Das Problem liegt wie ich glaube am setAttribute, da die Funktion nicht starten will.
Findet jemand den Fehler ??
Schreibfehler sind gewollt und wer sie findet und richtig zusammensetzt erhält die Formel um aus Wasser Bier zu machen
Bei Greasemonkey musst du mit addEventlistener arbeiten, wenn ich mich nicht irre..
Je größer der Deppenfaktor, desto gigantischer das Bescheidwissergefühl
-Dieter Nuhr
Habe es jetzt mit dem EventListener:
Dabei musste die Funktion Ausgelagert werden, d.H. das die Funktion nicht mehr injiziert wird sondern eigenständig im Script existiert.Code:document.getElementsByTagName('body')[0].addEventListener( "keypress" , getKeyCode, false );
Es funktioniert, jedoch mit einem sehr nervigen Hacken ... das keypress wird nur getriggert wen ich etwas in einem input Feld eingebe.
Gibt es da irgend eine Lösung ?
---------------------------------------------------------------------------------------------------------------------
Edit : Mit
und den nötigen Änderungen in der injizierten Funktion :Code:document.getElementsByTagName('body')[0].setAttribute( "onKeyup" , "getKeyCode(event.keyCode);" );
Geht es auf einmal .. obwohl die Änderung eigentlich sehr sehr minimal vom ursprünglichem sind.Code:var cont = 'function getKeyCode(key)\n\ {\n\ if (key == 39) window.location = "'+nextLink+'";\n\ else if (key == 37) window.location = "'+prevLink+'";\n\ }\n';
Tjaa versteh das mal einer.
---------------------------------------------------------------------------------------------------------------------
Edit : Ich merke das ich mir da ordentlich selbst ins Knie geschossen habe .... vor ein paar Monaten hatte ich nämlich noch kein NoScript installiert das mir die injizierungen blockt, da es denkt das das Script von der angesurften Seite kommt.
Es ist daher gut möglich das alles von Anfang an geklappt hat.![]()
Geändert von zocker (27.05.2010 um 20:17 Uhr)
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)