shlagish
06-26-2004, 06:36 AM
I made a tooltip script unlike any I have every seen, so I decided to post it here. Comments and questions are welcome.
Features:
Tooltip appears onmouseover and dissapears onmouseout.
Works in IE, Firebird and probably other browsers too :)
When you want a word to have a tooltip, you simply surround the word with ":" ex: :word:
Then you go in the javascript and add that word to the words[] array
ex: words["rabbit","frog","newWords"]
The you add the tooltip text in the desc[] array
ex: desc["newWord"]="<table><tr><td>may contain</td><td>may not contain</td></tr><tr><td>any html</td><td>carriage returns...</td>";
here is the code:
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="Shawn Inder" />
<title>Tooltip</title>
<style type="text/css">
<!--
#right { text-align: right; }
#center { text-align: center; }
#wordMeaning { background: #FF9;
border: 1px solid #000;
min-width: 250px;
position: absolute;
display: none;
}
#wordMeaning h1 { background: #CC0;
border: 1px solid #000;
font-size: 1.2em;
margin: 0;
padding: 0 .3em;
}
#wordMeaning div { padding: .5em; }
.Glossary { cursor: pointer;
color: #F00;
text-decoration: underline;
}
-->
</style>
<script type="text/javascript">
<!--
var desc=new Array(),
mX,
mY,
words=["Rabbit","Frog",];
desc["Rabbit"]="<ol><li>Very prolific mammel which digs terriers in sandy and buchy terrains. <cite>The forest houses many animals such as <strong>rabbits</strong>.</cite></li><li>Very cuddly pet often given to children at birthdays or christmas. <cite>I bought you a nice <strong>rabbit</strong>!</cite></li></ol>";
desc["Frog"]="<ol><li>Very slimey animal which hops and makes noises. <cite>Look at that green <strong>Frog</strong>.</cite></li><li>adj. One can be froggish, I guess. <cite>Your such a <strong>Frog</strong>.</cite></li></ol>";
function closeMeaning(){
document.getElementById("wordMeaning").style.display="none";
}
function moveMeaning(){
var tooltip=document.getElementById("wordMeaning"),
Xpos=(mX<document.body.clientWidth-267)?mX+15:document.body.clientWidth-267,
Ypos=mY+20;
tooltip.style.top=Ypos+"px";
tooltip.style.left=Xpos+"px";
}
function getMeaning(word){
var tooltip=document.getElementById("wordMeaning"),
Xpos=(mX<document.body.clientWidth-267)?mX+15:document.body.clientWidth-267,
Ypos=mY+20;
tooltip.style.left=Xpos+"px";
tooltip.style.top=Ypos+"px";
tooltip.style.display="block";
tooltip.innerHTML="<h1>"+word+"</h1>"+desc[word];
}
function getMousePos(e){
mX=(document.all)?event.offsetX:e.clientX+window.scrollX;
mY=(document.all)?event.offsetY:e.clientY+window.scrollY;
}
function makeTooled(){
var theHTML=document.body.innerHTML, i;
for(i=0;i<words.length;++i){
theHTML = theHTML.replace(new RegExp(":"+words[i]+":","gi"),'<span class="Glossary" onmouseover="getMeaning(\''+words[i]+'\');" onmousemove="moveMeaning();" onmouseout="closeMeaning();">'+words[i]+'</span>');
}
document.body.innerHTML=theHTML;
}
window.onload=makeTooled;
document.onmousemove=getMousePos;
//-->
</script>
</head>
<body>
<div id="wordMeaning"></div>
<div>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
</div>
<div>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
</div>
<div id="right"><p>I like :RaBbit:s and :FroG:s. I like :rabbit:s and :frog:s. I like :rabbit:s and :frog:s.</p></div>
<div id="center"><p>I like :Rabbit:s and :Frog:s.</p></div>
<div><p>I like :Rabbit:s and :Frog:s, hate Frogs though.</p></div>
<div>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
</div>
</body>
</html>
Working example (http://www.angelfire.com/pro/shlagish/tooltip.html)
Features:
Tooltip appears onmouseover and dissapears onmouseout.
Works in IE, Firebird and probably other browsers too :)
When you want a word to have a tooltip, you simply surround the word with ":" ex: :word:
Then you go in the javascript and add that word to the words[] array
ex: words["rabbit","frog","newWords"]
The you add the tooltip text in the desc[] array
ex: desc["newWord"]="<table><tr><td>may contain</td><td>may not contain</td></tr><tr><td>any html</td><td>carriage returns...</td>";
here is the code:
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="Shawn Inder" />
<title>Tooltip</title>
<style type="text/css">
<!--
#right { text-align: right; }
#center { text-align: center; }
#wordMeaning { background: #FF9;
border: 1px solid #000;
min-width: 250px;
position: absolute;
display: none;
}
#wordMeaning h1 { background: #CC0;
border: 1px solid #000;
font-size: 1.2em;
margin: 0;
padding: 0 .3em;
}
#wordMeaning div { padding: .5em; }
.Glossary { cursor: pointer;
color: #F00;
text-decoration: underline;
}
-->
</style>
<script type="text/javascript">
<!--
var desc=new Array(),
mX,
mY,
words=["Rabbit","Frog",];
desc["Rabbit"]="<ol><li>Very prolific mammel which digs terriers in sandy and buchy terrains. <cite>The forest houses many animals such as <strong>rabbits</strong>.</cite></li><li>Very cuddly pet often given to children at birthdays or christmas. <cite>I bought you a nice <strong>rabbit</strong>!</cite></li></ol>";
desc["Frog"]="<ol><li>Very slimey animal which hops and makes noises. <cite>Look at that green <strong>Frog</strong>.</cite></li><li>adj. One can be froggish, I guess. <cite>Your such a <strong>Frog</strong>.</cite></li></ol>";
function closeMeaning(){
document.getElementById("wordMeaning").style.display="none";
}
function moveMeaning(){
var tooltip=document.getElementById("wordMeaning"),
Xpos=(mX<document.body.clientWidth-267)?mX+15:document.body.clientWidth-267,
Ypos=mY+20;
tooltip.style.top=Ypos+"px";
tooltip.style.left=Xpos+"px";
}
function getMeaning(word){
var tooltip=document.getElementById("wordMeaning"),
Xpos=(mX<document.body.clientWidth-267)?mX+15:document.body.clientWidth-267,
Ypos=mY+20;
tooltip.style.left=Xpos+"px";
tooltip.style.top=Ypos+"px";
tooltip.style.display="block";
tooltip.innerHTML="<h1>"+word+"</h1>"+desc[word];
}
function getMousePos(e){
mX=(document.all)?event.offsetX:e.clientX+window.scrollX;
mY=(document.all)?event.offsetY:e.clientY+window.scrollY;
}
function makeTooled(){
var theHTML=document.body.innerHTML, i;
for(i=0;i<words.length;++i){
theHTML = theHTML.replace(new RegExp(":"+words[i]+":","gi"),'<span class="Glossary" onmouseover="getMeaning(\''+words[i]+'\');" onmousemove="moveMeaning();" onmouseout="closeMeaning();">'+words[i]+'</span>');
}
document.body.innerHTML=theHTML;
}
window.onload=makeTooled;
document.onmousemove=getMousePos;
//-->
</script>
</head>
<body>
<div id="wordMeaning"></div>
<div>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
</div>
<div>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
</div>
<div id="right"><p>I like :RaBbit:s and :FroG:s. I like :rabbit:s and :frog:s. I like :rabbit:s and :frog:s.</p></div>
<div id="center"><p>I like :Rabbit:s and :Frog:s.</p></div>
<div><p>I like :Rabbit:s and :Frog:s, hate Frogs though.</p></div>
<div>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
<p>make page scroll</p>
</div>
</body>
</html>
Working example (http://www.angelfire.com/pro/shlagish/tooltip.html)