marklet: Bookmarklet - Text zu <textarea> hinzufügen.

Bin vor ein paar Tagen über die nützlichen Bookmarklets gestoßen und war natürlich sofort begeistert. Mein langfristiges Ziel ist ein Bookmarklet, dass es mir erlaubt, in das textarea Feld des Editors in meinem WordPress.com Blog per Bookmarklet einen HTML Code an das Ende eines verfassten Artikels einzufügen. Der HTML Code wird zum Teil auch aus Angaben auf der Seite (Blog Titel, Permalink, ...) generiert.

Um mich in das Thema einzuarbeiten, habe ich gedacht, ich fange erstmal mit einem einfachen Beispiel an. Deswegen habe ich versucht, per Bookmarklet Text in das Feld im entsprechenden SELFHTML Artikel über mehrzeilige Eingabefelder einzugeben.
http://de.selfhtml.org/html/formulare/anzeige/textarea.htm

Nach einer Google Suche zu dem Thema und dem Studieren einiger Beispiel sieht mein erster Versuch nun folgendermaßen aus:

javascript:var%20txtarea=document.getElementsByName("user_eingabe");txtarea.value%20="test";void(0);

Scheint aber nicht zu funktionieren. Es passiert nichts. Mache ich da irgend etwas falsch?

Ich muss zugeben, dass ich wenig Javascript-Erfahrung habe, aber die Javascript Konsole in meiner Firebug Extension zeigt mir zumindest keinen Fehler an. Deswegen bin ich im Moment etwas ratlos.

Wäre für jede Hilfe dankbar.

  1. Mahlzeit marklet,

    javascript:var%20txtarea=document.getElementsByName("user_eingabe");txtarea.value%20="test";void(0);

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Hallo EKKi,

      • Was genau soll das Label namens "javascript:" dort?

      Das ist das Pseudoprotokoll, mit dem Bookmarklets nun mal beginnen. Also keine Sprungmarke. Lt. Wikipedia ist ein Bookmarklet ein Lesezeichen auf das Pseudoprotokoll javascript:, das ermöglicht, Code durch den Browser auszuführen.

      • Was genau sollen die URL-encodierten Leerzeichen (%20) dort?

      Sobald du das Bookmarklet in deinem Browser abspeicherst, werden die Leerzeichen entsprechend encodiert.

      Der Hinweis hat mich weitergebracht. Deswegen schon mal vielen Dank dafür.

      getElementsByName() liefert tatsächlich mehrere Elemente. Selbst wenn nur ein Element diesen Namens existiert, muss man darauf mit dem entsprechenden Arrayindex zugreifen. Nach einer kleinen Verbesserung läufts jetzt. :)

      javascript:var%20txtarea=document.getElementsByName("user_eingabe")[0];txtarea.value+=" test ";void(0);

      Gruß
      marklet

  2. Hallo Forum,

    auf Anraten von der Martin veröffentliche ich meine Anfrage nochmal hier in diesem Thread. Ein Doppelposting war natürlich nicht meine Absicht. Wobei ich diese Beurteilung und auch die Sperrung des zweiten Threads etwas hart finde. Es handelt sich schließlich um ein neues Problem.

    Aber lassen wir das. :) Hier also nochmal meine zweite Frage zum Thema, wobei es sich diesmal um ein Problem mit .replace handelt und nicht um meine Schwierigkeiten mit getElementsByName(). Ich hoffe, das mir trotz meines Faux-pas jemand helfen wird.

    Bin immer noch dabei mich in das Thema "Bookmarklets" einzuarbeiten. Jetzt bin ich wieder auf ein Problem gestoßen. Als Basis/Spielplatz dient der SELFHTML Eintrag über mehrzeilige Eingabefelder:

    http://de.selfhtml.org/html/formulare/anzeige/textarea.htm@title=http://de.selfhtml.org/html/formulare/anzeige/textarea.htm

    Das Bookmarklet sieht momentan so aus:

    javascript:var%20txtarea=document.getElementsByName("user_eingabe")[0];txtarea.value+=document.getElementsByTagName("p")[0].firstChild.data.replace(/:/g,"%3A");void(0);

    Durch Klicken des Bookmarklets wird das erste <p> Element in die <textarea> geschrieben, wobei der Doppelpunkt am Ende mittels .replace() durch den String "%3A" ersetzt werden soll.

    Ich bin davon ausgegangen, dass der Doppelpunkt am Ende in der <textarea> dann als "%3A" erscheint. Stattdessen erscheint ein Doppelpunkt. Genau das verstehe ich nicht und ist auch nicht gewollt.

    Warum erscheint nicht die ersetzte Zeichenkette "%3A"?

    Der Doppelpunkt steht hier nur exemplarisch. Hab das auch mit anderen Zeichen getestet.

    Bin für jede Hilfe dankbar.

    Gruß
    marklet

    1. Hi,

      javascript:var%20txtarea=document.getElementsByName("user_eingabe")[0];txtarea.value+=document.getElementsByTagName("p")[0].firstChild.data.replace(/:/g,"%3A");void(0);

      Wenn %20 vor der Scriptausführung zu einem Leerzeichen wird, wozu wird dann wohl %3A vor der Scriptausführung?

      Du mußt an dieser Stelle das %-Zeichen URL-encodieren ...

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
      Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
      1. Hallo MudGuard a.k.a Andreas,

        Du mußt an dieser Stelle das %-Zeichen URL-encodieren ...

        D'Oh. Im Nachhinein betrachtet natürlich vollkommen logisch. Bin in diesem Moment anscheinend auf der Leitung gesessen. Deshalb vielen Dank für deine Hilfe.

        Konnte mein Bookmarklet damit fertigstellen und bin jetzt ein glücklicherer Mensch. ;) :)

        Gruß
        marklet