/*
JavaScript Bible, Fourth Edition
by Danny Goodman
Publisher: John Wiley & Sons CopyRight 2001
ISBN: 0764533428
*/
<HTML>
<HEAD>
<TITLE>TextRectangle Object</TITLE>
<SCRIPT LANGUAGE="JavaScript">
// preserve reference to last clicked elem so resize can re-use it
var lastElem
// TextRectangle left tends to be out of registration by a couple of pixels
var rectLeftCorrection = 2
// process mouse click
function handleClick() {
var elem = event.srcElement
if (elem.className && elem.className == "sample") {
// set hiliter element only on a subset of elements
lastElem = elem
setHiliter()
} else {
// otherwise, hide the hiliter
hideHiliter()
}
}
function setHiliter() {
if (lastElem) {
var textRect = lastElem.getBoundingClientRect()
hiliter.style.pixelTop = textRect.top + document.body.scrollTop
hiliter.style.pixelLeft = textRect.left + document.body.scrollLeft - rectLeftCorrection
hiliter.style.pixelHeight = textRect.bottom - textRect.top
hiliter.style.pixelWidth = textRect.right - textRect.left
hiliter.style.visibility = "visible"
}
}
function hideHiliter() {
hiliter.style.visibility = "hidden"
lastElem = null
}
</SCRIPT>
</HEAD>
<BODY onClick="handleClick()" onResize="setHiliter()">
<H1>TextRectangle Object</H1>
<HR>
<P>Click on any of the four colored elements in the paragraph below and watch
the highlight rectangle adjust itself to the element's TextRectangle object.
<P CLASS="sample">Lorem ipsum dolor sit amet, <SPAN CLASS="sample"
STYLE="color:red">consectetaur adipisicing elit</SPAN>, sed do eiusmod tempor
<SPAN CLASS="sample" STYLE="color:green">incididunt ut labore et dolore <SPAN
CLASS="sample" STYLE="color:blue">magna aliqua</SPAN>. Ut enim adminim veniam,
quis nostrud exercitation ullamco</SPAN> laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit involuptate velit esse cillum
dolore eu fugiat nulla pariatur.</P>
<DIV ID="hiliter" STYLE="position:absolute; background-color:salmon; z-index:-1;
visibility:hidden"></DIV>
</BODY>
</HTML>
|