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.





Jan Meese
March 27th, 2007 at 3:33 pm
Hallo. Danke für das Script. Nur ein Problem habe ich:
sobald ich die js. Datei einbinde, wird automatisch eine Leerzeile am Anfang der Seite erzeugt. Es wird kein oder so eingefügt, am Quelltext sehe ich keine Veränderung. Aber der Header meiner Seite rutscht 10 Pixel oder so tiefer.
Ist das Problem bekannt?
irgendein besucher
May 27th, 2008 at 1:43 pm
Hallo Jan, guck dir nochmal die (falls ich mich nicht verzählt habe) 14. Zeile an. Dürfte funktionieren indem du einfach den Zeilenumbruch entfernst ;)
(Huch sehe grad das Datum der Frage, könnte evtl. aber doch interessant sein, da die Seite hier recht hoch bei google gelistet ist, falls man nach tooltips sucht)