Webwork-Tools - Dem Webworker seine Werkzeugkiste



Zeichen zählen im Browser

Von Perun am 27. Januar 2010 um 01:38

Was ich schon seit längerem vermisst habe ist die Angabe über die Anzahl der Zeichen, die man in einem Textfeld oder eine Textbox eingetippt hat: also einem Zeichen-Counter.

Zeichen-Counter

Und wie viele Zeichen habe ich bereits?

Das ist z. B. dann interessant wenn man wissen möchte ob ein Text auch die benötigte Anzahl der Zeichen erreicht hat, um bei der VG Wort gemeldet zu werden oder wenn man Nachrichten von Facebook zu Twitter sendet um zu wissen, wann 140 Zeichen erreicht sind um zu wissen wo der weitergleitete Text endet.

Sicherlich, übergangsweise kann man sich dadurch helfen, indem man den eingetippten Text in einen Texteditor reinkopiert, der die Funktion eingebaut hat. Auf die Dauer ist das keine komfortable Lösung. Es musste eine Lösung her, die auch im Browser angesiedelt ist.

Für Firefox gibt es zwar ein Add-on, dass dieses kann, aber leider noch im experimentellem Stadium und nicht mit Firefox 3.6 kompatibel. Einen weiteren Tipp denn ich via Twitter bekam, war ein Greasemonkey-Script.

Allerdings, die bis jetzt beste Lösung hatte Christian Schaefer in Form eines Bookmarklets (Was sind Bookmarklets?) bereit:

javascript:counter=document.createElement('input');counter.id='counter';counter.style.position='fixed';counter.style.zIndex='1000';counter.style.right='0';counter.style.top='0';document.body.appendChild(counter);textareas=document.getElementsByTagName('textarea');for(i=0;i<textareas.length;i++)textareas[i].addEventListener('keyup',function(e){document.getElementById('counter').value=this.value.length;},false);

Download: Zähler-Textbox (txt, 413 Byte)

Wenn du den Code aus der oberen Textdatei als Lesezeichen ablegst, dann werden alle Zeichen, die du in eine Textbox (<textarea>) schreibst mitgezählt. Es werden sowohl "normale" Zeichen als auch die Leerschritte mitgezählt. Doch es geht noch besser:

javascript:var%20counter=document.createElement('input');counter.id='counter';counter.style.position='fixed';counter.style.zIndex='1000';counter.style.right='0';counter.style.top='0';document.body.appendChild(counter);var%20tags=new%20Array('input','textarea','div');for(j=0;j<tags.length;j++){var%20elems=document.getElementsByTagName(tags[j]);for(i=0;i<elems.length;i++){if(typeof(elems[i].value)!='undefined'||elems[i].contentEditable=="true"||elems[i].contentEditable==true)elems[i].addEventListener('keyup',function(e){if(typeof(this.value)!='undefined'){document.getElementById('counter').value=this.value.length;}else{if(typeof(this.innerText)!='undefined'){document.getElementById('counter').value=this.innerText.length;}else{if(typeof(this.textContent)!='undefined'){document.getElementById('counter').value=this.textContent.length;}}}},false);}}

Download: Zähler alles (txt, 855 Byte).

Wenn du diesen Code der zweiten Textdatei als Lesezeichen ablegst, dann werden die Zeichen der Textboxen, der Textfelder(<input />) und in div-Boxen , wie sie Facebook hat, mitgezählt.

Und wie läuft das nun ab?

Einfach ein neues Lesezeichen erstellen und eines der beiden Codes als Adresse eingeben:

Neues Bookmarklet anlegen

Neues Bookmarklet anlegen

Anschließend speichern und das ganze ist einsatzbereit. Wenn man es benutzen möchte, setzt man als erstes den Cursor in den Textbereich in welchem man den Text verfassen will und ruft das Bookmarklet auf. Anschließend öffnet sich oben rechts ein zusätzliches Feld in dem die Anzahl der Zeichen gezählt wird (siehe auch die erste Abbildung).

Was das Bookmarklet auch kann ist die die Zeichen korrekt zu zählen, wenn die Zählung durch einen Reload des Bildschirms unterbrochen wurde (z. B. automatische Speicherung bei WordPress) oder wenn man schon geschrieben hat, bevor man das Lesezeichen aufgerufen hat. In solchen Fällen, einfach den Cursor wieder in den Textbereich setzen und weiter schreiben. Nach der Eingabe des nächsten Zeichens zählt das Bookmarklet korrekt weiter.

Super, ich bin zufrieden. Vielen Dank an Christian!

Nachtrag: ich habe das Bookmarklet unter Firefox 3.6, Chrome 4 und Opera 10.10 auf Vista getestet und es läuft einwandfrei. Der Internet Explorer wollte irgendwie nicht, aber das ist nicht weiter schlimm.

Diesen Artikel weiterempfehlen:
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • MisterWong.DE
  • Technorati
  • Twitter
  • Webnews.de
  • Yigg
  • Wikio DE

Verwandte Artikel

Eigenwerbung: unsere Bücher (WordPress und Webwork-Tools)

 — 


7 Reaktionen auf diesen Beitrag »»

Kommentare

  1. Sebastian Schneider sagte am
    27. Januar 2010 um 07:32 folgendes:

    Hallo,
    kann es sein, dass der Code nicht vollständig ist? Die Schleife im Codefeld ist noch nicht abgeschlossen. Sieht im FF und Chrome identisch aus, funktionieren tut es dann bei mir in beiden nicht.
    Würde mich interessieren, da ich sowas auch schon länger gesucht habe :-)
    Gruß
    Sebastian

    • Perun sagte am
      27. Januar 2010 um 10:40 folgendes:

      @Sebastian,

      danke für den Hinweis. WordPress hat bei beiden Beispiel, die letzte Schleife verschluckt. Ich habe vergessen den Code zu maskieren :roll:

      Habe das ganze jetzt als Textdateien hochgeladen.

  2. Schepp sagte am
    27. Januar 2010 um 10:09 folgendes:

    Jau, der Code oben ist irgendwann offenbar durch die Codebox selbst beschnitten. Hier die Langversion:

    javascript:var%20counter=document.createElement('input');counter.id='counter';counter.style.position='fixed';counter.style.zIndex='1000';counter.style.right='0';counter.style.top='0';document.body.appendChild(counter);var%20tags=new%20Array('input','textarea','div');for(j=0;j<tags.length;j++){var%20elems=document.getElementsByTagName(tags[j]);for(i=0;i<elems.length;i++){if(typeof(elems[i].value)!='undefined'||elems[i].contentEditable=="true"||elems[i].contentEditable==true)elems[i].addEventListener('keyup',function(e){if(typeof(this.value)!='undefined'){document.getElementById('counter').value=this.value.length;}else{if(typeof(this.innerText)!='undefined'){document.getElementById('counter').value=this.innerText.length;}else{if(typeof(this.textContent)!='undefined'){document.getElementById('counter').value=this.textContent.length;}}}},false);}}

    http://pastebin.com/d336e741a

    • Sebastian Schneider sagte am
      29. Januar 2010 um 17:55 folgendes:

      Ja dein Codeblock funktioniert. Bei mir geht obiger immer noch nicht, aber so kann ich das jetzt in beiden Browsern nutzen. Vielen Dank, das hilft wirklich im Browser!

      Grüße
      Sebastian

  3. Thomas Scholz sagte am
    3. Februar 2010 um 12:24 folgendes:

    Danke sehr nützlich. Funktioniert auch in Opera.

Trackbacks und Pingbacks

  1. Tweets die Webwork-Tools erwähnt -- Topsy.com
  2. ein Zeichencounter wie bei #Twitter wäre… « Villa der Vampire

Hinterlasse einen Kommentar

XHTML (folgende Tags sind erlaubt): <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> .

Code-Beispiele: damit die Code-Beispiele richtig angezeigt werden müssen die Sonderzeichen maskiert werden (z. B. < zu &lt;).