Per Javascript-Lesezeichen Text in aktuelles Textfeld einfügen

Moredread

Grünschnabel
Hallo,

ich würde mit meinem Firefox gerne ein Javascript-Lesezeichen basteln, das Text in ein aktuelles Textfeld schreibt. Um Missverständnissen vorzubeugen, mal ein kleines Beispiel:

Ich füge ein Lesezeichen hinzu. Als Adresse gebe ich an:

javascript:document.write("Hello World!");

Rufe ich jetzt dieses Lesezeichen auf, wird eine leere Seite geöffnet und dort "Hello World" rein geschrieben.

Ich hätte es nun gerne so, dass, anstelle einer leeren Seite, der Text "Hello World" in das Textfeld eingetragen wird, das ich gerade benutze. Sofern ich den Namen des Textfeldes kenne ist das vermutlich kein Problem, das ganze sollte aber nach Möglichkeit in jedem Textfeld funktionieren.

Hat jemand eine Idee, wie so ein Code aussehen könnte?

thx

JM
 
Code:
javascript:document.activeElement.value="foobar";alert(1);

Mir ist nichts besseres als das alert() eingefallen, denn sonst kommst du wieder auf diese leere Seite. window.history.go(0) hat das Textfeld wieder geleert. Musst du mal recherchieren, ob es was besseres gibt. Aber ansonsten funktioniert das Lesezeichen.

Edit: In wie weit activeElement verbreitet ist, weiß ich nicht. Im Firefox funktioniert es.
 
Zuletzt bearbeitet:
Hallo,

danke ersteinmal, das klappt ja schon einmal soweit ganz gut. Das mit der Messagebox bzw. Alternativ der leeren weißen Seite ist ein bisschen lästig, aber da findet sich bestimmt noch was. Zudem habe ich aus dem "=" ein "+=" gemacht, damit der vorhandene Text im Textfeld nicht verschwindet - eine Minimalität, aber ich hatte ja nicht explizit darauf hingewiesen.

Jetzt stellt sich natürlich die Frage, ob jemand weiß, wie ich diese leere weiße Seite verhindern kann... bzw. welche Alternative es zu der Messagebox gibt.
 
Mir kam eben eine Idee und es funktioniert auch. Anstatt der alert-Box öffnet man einfach ein neues Fenster und schließt es sofort wieder. Das verhindert (im Firefox) erfolgreich, dass man die Seite verlässt.

Javascript:
javascript:document.activeElement.value+="foobar";window.open("about:blank").close();
 
Habe es geschafft, mittels folgendem Beitrag...

http://www.tutorials.de/javascript-ajax/187515-text-cursorstelle-im-textfeld-einfuegen.html

...den Text in einer beliebigen Stelle des Textfeldes einzugeben, genauer gesagt, an der Stelle, an der der Cursor steht. Dazu nutze ich diesen Code:

javascript:strText = "Hier was reinschreiben";objElem = document.activeElement;if(document.selection){objElem.focus();document.selection.createRange().text = strText;document.selection.createRange().select();}else if (objElem.selectionStart || objElem.selectionStart == '0'){intStart = objElem.selectionStart;intEnd = objElem.selectionEnd;objElem.value = (objElem.value).substring(0, intStart) + strText + (objElem.value).substring(intEnd, objElem.value.length);objElem.selectionStart=objElem.selectionEnd=intStart+strText.length;objElem.focus();}else{objElem.value += strText;}};window.open("about:blank").close();

Der Code sieht in einer einzigen Zeile gruselig aus, aber er funktioniert :)
 
Ich muss das Thema nochmal kurz raus kramen. Da ich mich selbst gerade für Bookmarklets (so scheint man das zu nennen, was du gemacht hast. Mir war das Wort bis eben unbekannt) interessiere, habe ich herausgefunden, wie man das unschöne window.open los wird. Man steckt einfach den gesamten Code in eine anonyme Funktion.

Vorher
Javascript:
javascript:document.activeElement.value+="foobar";window.open("about:blank").close();

Nachher
Javascript:
javascript:(function() {document.activeElement.value+="foobar";})();
 
Zurück