[Edit: ‚Benutzung‘ hier her kopiert]
Ich bin ein großer Freund von Easter-Eggs jeglicher Art.
Als ich also gestern in einer „Auf-Wikipedia-von-Seite-zu-Seite-klick“-Session auf irgendwelchen nicht mehr nachvollziehbaren Wegen zu alten Computerspielen und Cheat-Codes kam, wurde mir plötzlich bewusst, was das vorherrschende Problem des Internets ist: Es gibt viel zu wenige Nudepatches, äh Cheater, quatsch-ne-anders versteckte Fundstücke im Netz 🙂
Also schrieb ich schnell eine kleine MooTools-Klasse, mit der man auch mit wenig Javascript-Kenntnissen wundervolle Tastenabfolgen abfragen und seinem inneren Spielkind nachgehen kann. „Unnütz“, mögen viele an dieser Stelle sagen – worauf ich nur „Richtig, aber ich mag’s“ entgegnen kann.
Demo/Benutzung/Download:
Demo: Usage+Download (englisch).
Benutzung (siehe Demo):
myCheats = new MooCheatCode({ autostart: false, //start automatically maxCache: 20, //max size of cached keypresses tickIntervalLength: 1000, //interval to match cache with codes stopPropagation: true, //cancels Firefox' findasyoutype feature... codes: {} //something like { // 'code1': 'q, w, e, r, t, up, down', // 'code2': 'a, s, d, f, g' //} });
‚useful‘ methods (they all return the MooCheatCode instance):
.addCode(name, code): Adds Single Code .addCodes({'name1': code1, 'name2': code2}): Adds Codes .start(option): Starts. .stop(option): Stops.
events:
.addEvents({ 'match': function(ev){ //fired if any code is matched //ev.name, ev.code }, 'match'+name: function(ev){ //fired if string 'name' is a match //ev.name, ev.code }, 'addcode': function(ev){ //fired after addCode(); //ev.name, ev.code }, 'addcodes': function(ev){ //fired after addCode(); //ev is like {'name1': code1, 'name2': code2} }, 'start': function(ev){ //fired after start(); //ev = options for start() }, 'stop': function(ev){ //fired after stop(); //ev = options for stop(); } });
Genau: „Unnütz, aber ich mag’s“
Blöd nur, dass Firefox mit „find-as-you-type“ (haben das eigentlich alle an oder bin ich eher da die Ausnahme? ) die Key-Events verschluckt. Lief bei mir erst, nachdem ich find-as-you-type deaktiviert habe… k.A. ob man da mit JS überhaupt zwischenkommt.
Hah, na sowas. Gut zu wissen 😉 Ich werde mich mal schlau machen, ob man das irgendwie umgehen kann – am besten, ohne die FFx-Suche kaputt zu bekommen. Glaube ich aber nicht – Userprefs gehen schließlich vor.
Grade zu faul zum googlen, aber ich meine es gab sowas wie „onbeforekeypress“
Nö, onbeforekeypress ist mir fremd.
Habe allerdings gerade zum Einschlafen den listener auf window umgebogen (Find-as-you-type horcht da auch, das fand ich nur fair *g*) und eine Option für ein einfaches stopPropagation() eingebaut (standard: true). Hat schon geholfen – die Suche selbst ist ja auch nur JS 😉