Beautiful interfaces& solid&smart backends make todays web work.

About Maik Vlcek Follow me on twitter
Themenschwerpunkte dieses Blogs:

Markieren von Text abschalten ohne Javascript per CSS

Share and Enjoy: Diese Icons verlinken auf Bookmark Dienste bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • Digg

Ganz ohne Javascript und das überall verbreitete onselectstart bzw. onselect lässt sich das Selektieren von Text per CSS (bzw. über das Setzen eines Attributes für den Internet Explorer und Opera) verhindern.

Dazu sei als Allererstes erwähnt, dass ich diese Möglichkeit NIE auf normalen Text einer Webseite anwenden würde, da so die Usability EXTREM eingeschränkt wird und der Besucher verwirrt die Seite verlässt. Außerdem kann sich der findige Besucher auch über den Quelltext der Seite entsprechende Textpassagen kopieren – als Kopierschutz sollte diese Methode also nicht erwägt werden!

Wozu das ganze also überhaupt?

Ich bin vor kurzem bei der Weiterentwicklung der custom Form Elements auf ein Problem gestossen, als ich ein Text-Label einer Schaltfläche (dynamisch generiert) vor versehentlichem Markieren schützen wollte. Schaltflächen lassen wie gewohnt ein Markieren ihres Label eh nicht zu und dieses Verhalten musste ich imitieren. Die Lösung habe ich nach einiger Recherche zusammengetragen und sie funktioniert bei mir für IE 6/7, Opera 9, Netscape, Firefox 2, Safari:

Mootools code (Eigenschaften per JS setzen):

if(window.ie || window.opera){this.lab.setProperty("unselectable","on");}
if(window.gecko){this.lab.setStyle("MozUserSelect","none");}
if(window.webkit){this.lab.setStyle("KhtmlUserSelect","none");}

CSS / Attribut

.myUnselectableText{
/* Gecko-based, Mozilla */
-moz-user-select:none;
/* Safari */
-khtml-user-select: none;
}

Für Opera und IE 6/7 wird die Eigenschaft unselectable gesetzt.

Anmerkung: ein XHTML Dokument validiert nicht mehr, wird diese Eigenschaft in den Quelltext geschrieben, also sollte man dieses Attribut lieber per JS setzen :)

<p class="myUnselectableText" unselectable="on"/>Absatz</p>

Publiziert am 24. Okt. 2007 von mediavrog in , , . Kategorie: BRS.

Share and Enjoy: Diese Icons verlinken auf Bookmark Dienste bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • Y!GG
  • MisterWong
  • Linkarena
  • Facebook
  • TwitThis
  • email
  • del.icio.us
  • Digg
  • StumbleUpon
  • Technorati
Monster-Me eating knowledge
5 Responses RSS Icon
Trackback URL
  1. Cornholio sagt:

    Die CSS Attribute sind nicht ganz richtig. Richtig muss es heissen:

    .myUnselectableText{
    /* Gecko-based, Mozilla */
    -moz-user-select:none;
    /* Safari */
    -khtml-user-select:none;
    }

    Ausserdem sind “//” kommentare in StyleSheets nicht zulässig.

    MozUserSelect und KhtmlUserSelect sind Javascript Objekteigenschaften.

  2. Thomas sagt:

    Hallo Maik,

    ich kann nur danke, danke, danke sagen. Ich habe mir schon fast die Finger wund gesucht nach diesen CSS Regeln. Leider hört man ja überall nur die Diskussionen ob das nun angebracht ist oder nicht, da ich aber an einem Webprojekt arbeite, bei dem Tabellen-Zellen ausgewählt (einfach Klick und doppel Klick) werden sollen musste ich etwas finden, da mir vorher immer die Zellen bzw Textteile markiert wurden.

    Darum noch einmal Danke
    Gruß Thomas

  3. mediavrog sagt:

    Danke Cornholio für die Hinweise.
    Das mit den Kommentaren war wohl eher ein Schusselfehler aber die Eigenschaften müssen wahrlich (falls direkt ins CSS geschrieben) -moz-user-select:none; und -khtml-user-select:none; heißen.

    Interessanterweise wird es trotzdem korrekt interpretiert :)

    Danke und Grüße

  4. mediavrog sagt:

    @Thomas:

    Wie ich oben beschrieben habe ist der Einsatz dieser Eigenschaften im Allgemeinen natürlich kritisch zu hinterfragen. Ich denke in deinem Falle, in Webanwendungen mit Funktionen wie von dir beschrieben, können sie ohne Weiteres zum Einsatz kommen um die Usability zu gewähren.

  5. Maxim sagt:

    Danke vielmals für den aufschlussreichen Tipp.
    Hat mir sehr viel Arbeit erspart ( brauche es für ein online desktop ;) ).

    Greez m@|{c1m

Einen Kommentar hinterlassen

Du kannst die folgenden Schlagwörter verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

top top