Tooltip with JavaScript
Mit dem folgenden kleinen Skript lassen sich unterschiedliche Tooltips mittels JavaScript realisieren.
Die JavaScript-Funktionen zur Erzeugung der Tooltips werden über eine ausgelagerte JavaScript-Datei eingebunden.
- // tt = tooltip
- // global variables
- var intOffset_X_Pointer = 20;
- var intOffset_Y_Pointer = 20;
- // elements for tooltip
- var aryToolTipElements = Array('a','span');
- // browser?
- var blnIE = document.all;
- var blnNS = document.getElementById && !document.all;
- // tt-container
- document.write('<div id="my_tt"></div><br />');
- var show_tt = false;
- var obj_tt = document.getElementById("my_tt");
- // get tt-elements
- function generateToolTips() {
- for (var x = 0; x != aryToolTipElements.length; x++) {
- var objElement = document.getElementsByTagName(aryToolTipElements[x]);
- if (objElement) {
- for (var y = 0; y != objElement.length; y++) {
- if (objElement[y].className == "tt") {
- objElement[y].setAttribute("tt_content", objElement[y].title);
- objElement[y].removeAttribute("title");
- objElement[y].onmouseover = function() {
- enable_tt(this.getAttribute("tt_content"),true);
- };
- objElement[y].onmouseout = function() { hide_tt(false); };
- }
- }
- }
- }
- }
- function enable_tt(tt_content, blnShow_tt) {
- show_tt = blnShow_tt;
- obj_tt.innerHTML = tt_content;
- }
- function hide_tt(blnShow_tt) {
- show_tt = blnShow_tt;
- obj_tt.style.width = '';
- obj_tt.style.left = "-5000px";
- obj_tt.style.visibility = "hidden";
- }
- function tt_position(objThis) {
- if (show_tt) {
- // get ViewPortheight
- var intcH = document.documentElement.clientHeight;
- // differentiated values for IE and NS
- if (blnIE) {
- intcX = event.clientX; intcY = event.clientY + document.documentElement.scrollTop;
- intsLeft = document.documentElement.scrollLeft;
- var intBottom = intcH - event.clientY - 20;
- } else {
- intcX = objThis.clientX; intcY = objThis.pageY;
- var intBottom = intcH - objThis.clientY - 20;
- intsLeft = 0;
- }
- // set tt-pos
- obj_tt.style.left = intcX - intOffset_X_Pointer + "px";
- if (intBottom < obj_tt.offsetHeight) {
- obj_tt.style.top = intcY - obj_tt.offsetHeight - 10 + "px";
- } else {
- obj_tt.style.top = intcY + intOffset_Y_Pointer + "px";
- }
- obj_tt.style.visibility = "visible";
- }
- }
Im Kopfbereich der HTML-Seite sind nur wenige Änderungen notwendig. Das ausgelagerte JavaScript (tooltip.js) sowie zwei Anweisungen zur initialisieren müssen eingebunden werden.
- <script type="text/javascript" src="tooltip.js"></script>
- window.onload = function() {
- generateToolTips();
- document.onmousemove = tt_position;
- }
Nun können unterschiedliche Element mit einen Tooltip versehen werden. Dafür muss dem Element die CSS-Klasse "tt" zugeordnet, sowie der Inhalt des Tooltips in das Attribut "title" geschrieben werden.
- <a href="http://www.knoxmic.net" class="tt"
- title="<p>get this tooltip script now</p>">tooltip #1</a>
Das vorgestellte Beispiel kann wieder im Browser betrachtet oder heruntergeladen werden.
Fun with Google Code Search

Vor wenigen Tagen hat Google ein neues Tool freigegeben. Was man in Quelltext so alles entdecken kann: http://www.google.com/codesearch?q=d'oh
Ebenso: http://www.google.com/codesearch?q=easteregg
CSS hacks 2 go
Damit eine Website in unterschiedlichen Browsern richtig dargestellt werden kann, bedarf es nicht selten ein paar Tricks. Die folgenden selbst eingesetzten CSS-Snippets sollen eine eigene kleine Sammlung dieser Tricks darstellen:
So läßt sich zum Beispiel ein Bug bei der Implementierung einer CSS-Anweisung (voice-family) im Business Browser IE 4/5 zum verbergen von CSS-Anweisungen ausnutzen.
- span {
- font-size:x-small;
- voice-family:"\"}\"";
- voice-family:inherit;
- font-size:small;
- }
Um den IE 4/5/6 ganz vor der Tür stehen zu lassen, genügt der Gebrauch eines Kindselektors:
- html>body p { margin:0; }
Alle in dem Container, erste und letzte Zeile im Codebeispiel, enthaltenen Anweisungen sind für den Netscape 4 unsichtbar.
- /*/*/a{}
- body {
- margin:0;
- }
- /* */
Seit nicht allzu langer Zeit, tendiere ich allerdings dazu, CSS-Anweisungen die ich für den IE korrigieren muss, über Conditional Comments darzustellen. Genau das würde ich auch allen Besuchern empfehlen, mit der weiteren Verbreitung des IE 7 sollten auch einige css hacks der Vergangenheit angehören.
- <!--[if IE]>
- <style type="text/css" media="screen">
- p {
- padding:0;
- margin:0;
- }
- </style>
- <! [endif]-->

After having passed my training as computer scientist at KOMSA AG. I´m currently working for computerunivers.net as an Software Engineer.





