Skip to content

Instantly share code, notes, and snippets.

@clairvy
Created January 31, 2009 07:21
Show Gist options
  • Save clairvy/55471 to your computer and use it in GitHub Desktop.
Save clairvy/55471 to your computer and use it in GitHub Desktop.
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<title></title>
</head>
<body>
<h2>17.4</h2>
<h3>17.4.1</h3>
<a href="www.davidflanagan.com" tooltip="good Java/JavaScript blog"
onmouseover="Tooltip.schedule(this, event)">David Flanagan's blog</a>
<style type="text/css">
.tooltipShadow {
background: url(shadow.png);
}
.tooltipContent {
left: -4px;
top: -4px;
background-color: #ff0;
border: solid black 1px;
padding: 5px;
font: bold 10pt sans-serif;
}
</style>
<script type="text/javascript">
// 14-2
var Geometry = {};
if (window.screenLeft) {
Geometry.getWindowX = function () { return window.screenLeft; };
Geometry.getWindowY = function () { return window.screenTop; };
} else if (window.screenX) {
Geometry.getWindowX = function () { return window.screenX; };
Geometry.getWindowY = function () { return window.screenY; };
}
if (window.innerWidth) {
Geometry.getViewportWidth = function () { return window.innerWidth; };
Geometry.getViewportHeight = function () { return window.innerHeight; };
Geometry.getHorizontalScroll = function () { return window.pageXOffset; };
Geometry.getVerticalScroll = function () { return window.pageYOffset; };
} else if (document.documentElement && document.documentElement.clientWidth) {
Geometry.getViewportWidth = function () { return document.documentElement.clientWidth; };
Geometry.getViewportHeight = function () { return document.documentElement.clientHeight; };
Geometry.getHorizontalScroll = function () { return document.documentElement.scrollLeft; };
Geometry.getVerticalScroll = function () { return document.documentElement.scrollTop; };
} else if (document.body.clientWidth) {
Geometry.getViewportWidth = function () { return document.body.clientWidth; };
Geometry.getViewportHeight = function () { return document.body.clientHeight; };
Geometry.getHorizontalScroll = function () { return document.body.scrollLeft; };
Geometry.getVerticalScroll = function () { return document.body.scrollTop; };
}
if (document.documentElement && document.documentElement.scrollWidth) {
Geometry.getDocumentWidth = function () { return document.documentElement.scrollWidth; };
Geometry.getDocumentHeight = function () { return document.documentElement.scrollHeight; };
} else if (document.body.scrollWidth) {
Geometry.getDocumentWidth = function () { return document.body.scrollWidth; };
Geometry.getDocumentHeight = function () { return document.body.scrollHeight; };
}
// 16-4
function Tooltip() {
this.tooltip = document.createElement("div");
this.tooltip.style.position = "absolute";
this.tooltip.style.visibility = "hidden";
this.tooltip.className = "tooltipShadow";
this.content = document.createElement("div");
this.content.style.position = "relative";
this.content.className = "tooltipContent";
this.tooltip.appendChild(this.content);
}
Tooltip.prototype.show = function (text, x, y) {
this.content.innerHTML = text;
this.tooltip.style.left = x + "px";
this.tooltip.style.top = y + "px";
this.tooltip.style.visibility = "visible";
if (this.tooltip.parentNode != document.body) {
document.body.appendChild(this.tooltip);
}
};
Tooltip.prototype.hide = function () {
this.tooltip.style.visibility = "hidden";
};
Tooltip.prototype.schedule = function (target, e) {
var text = target.getAttribute("tooltip");
if (!text) {
return;
}
var x = e.clientX + Geometry.getHorizontalScroll();
var y = e.clientY + Geometry.getVerticalScroll();
x += Tooltip.X_OFFSET;
y += Tooltip.Y_OFFSET;
var self = this;
var timer = window.setTimeout(function () { self.show(text, x, y); },
Tooltip.DELAY);
if (target.addEventListenr) {
target.addEventListener("mouseout", mouseout, false);
} else if (target.attachEvent) {
target.attachEvent("onmouseout", mouseout);
} else {
target.onmouseout = mouseout;
}
function mouseout() {
self.hide();
window.clearTimeout(timer);
if (target.removeEventgListenr) {
target.removeEventgListener("mouseout", mouseout, false);
} else if (target.detachEvent) {
target.detachEvent("onmouseout", mouseout);
} else {
target.onmouseout = null;
}
}
};
Tooltip.tooltip = new Tooltip();
Tooltip.schedule = function (target, e) {
Tooltip.tooltip.schedule(target, e);
};
</script>
<hr>
<address></address>
<!-- hhmts start --> Last modified: Sat Jan 31 16:19:44 +0900 2009 <!-- hhmts end -->
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment