<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wbex.ru/index.php?action=history&amp;feed=atom&amp;title=JavaScript_DHTML%2FHTML%2FText_HTML</id>
		<title>JavaScript DHTML/HTML/Text HTML - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wbex.ru/index.php?action=history&amp;feed=atom&amp;title=JavaScript_DHTML%2FHTML%2FText_HTML"/>
		<link rel="alternate" type="text/html" href="http://wbex.ru/index.php?title=JavaScript_DHTML/HTML/Text_HTML&amp;action=history"/>
		<updated>2026-04-04T18:28:49Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://wbex.ru/index.php?title=JavaScript_DHTML/HTML/Text_HTML&amp;diff=2622&amp;oldid=prev</id>
		<title> в 10:02, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://wbex.ru/index.php?title=JavaScript_DHTML/HTML/Text_HTML&amp;diff=2622&amp;oldid=prev"/>
				<updated>2010-05-26T10:02:41Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 10:02, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://wbex.ru/index.php?title=JavaScript_DHTML/HTML/Text_HTML&amp;diff=2623&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://wbex.ru/index.php?title=JavaScript_DHTML/HTML/Text_HTML&amp;diff=2623&amp;oldid=prev"/>
				<updated>2010-05-26T07:23:06Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==An example of a scrolling message==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
Javascript Essentials&lt;br /&gt;
by Jason J. Manger&lt;br /&gt;
Publisher: Mcgraw-Hill Osborne Media; &lt;br /&gt;
ISBN: 0078822343&lt;br /&gt;
*/&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
  Program 10-6&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;script language=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 var timerId;&lt;br /&gt;
 var msg = &amp;quot;This is an example of a scrolling message&amp;quot;;&lt;br /&gt;
 var counter = 0;&lt;br /&gt;
 // Is the timer already running?&lt;br /&gt;
 if (timerId != null)&lt;br /&gt;
    clearTimeout(timerId);&lt;br /&gt;
 function pad() {&lt;br /&gt;
   var padding  = &amp;quot;&amp;quot;;&lt;br /&gt;
   // Prepend 50 spaces to the message:&lt;br /&gt;
   for (var n=0; n &amp;lt;= (50 + msg.length); n++)&lt;br /&gt;
       padding += &amp;quot; &amp;quot;;&lt;br /&gt;
   return(padding);&lt;br /&gt;
 }&lt;br /&gt;
 function scroll() {&lt;br /&gt;
  newMsg = pad() + msg + &amp;quot; &amp;quot;;&lt;br /&gt;
  document.forms[0].elements[0].value =&lt;br /&gt;
           newMsg.substring(counter, newMsg.length);&lt;br /&gt;
  if (counter == newMsg.length) {&lt;br /&gt;
     counter = 0;&lt;br /&gt;
  }&lt;br /&gt;
  counter ++;&lt;br /&gt;
  timerId = setTimeout(&amp;quot;scroll()&amp;quot;, 1);  &lt;br /&gt;
  return true;&lt;br /&gt;
 }&lt;br /&gt;
//--&amp;gt;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body onLoad=&amp;quot;scroll()&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;text&amp;quot; size=70&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Animating Text Styles==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Styling Text&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;script language=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
var color = true&lt;br /&gt;
var heading = null&lt;br /&gt;
function styleText(milliseconds) {&lt;br /&gt;
 window.setInterval(&amp;quot;changeColors()&amp;quot;, milliseconds)&lt;br /&gt;
}&lt;br /&gt;
function changeColors() {&lt;br /&gt;
 var heading;&lt;br /&gt;
 if(document.getElementById != null)&lt;br /&gt;
   heading = document.getElementById(&amp;quot;styleme&amp;quot;)&lt;br /&gt;
 else if(navigator.appName == &amp;quot;Microsoft Internet Explorer&amp;quot;)&lt;br /&gt;
   heading = document.all.item(&amp;quot;styleme&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 if(color &amp;amp;&amp;amp; heading != null) {&lt;br /&gt;
   heading.style.backgroundColor = &amp;quot;rgb(255,0,0)&amp;quot;&lt;br /&gt;
   heading.style.color = &amp;quot;rgb(0,200255)&amp;quot;&lt;br /&gt;
 }else if(heading != null) {&lt;br /&gt;
   heading.style.backgroundColor = &amp;quot;rgb(255,255,255)&amp;quot;&lt;br /&gt;
   heading.style.color = &amp;quot;rgb(0,200,0)&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 color = ! color;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body onload=&amp;quot;styleText(1000)&amp;quot; bgcolor=&amp;quot;white&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h1 align=&amp;quot;center&amp;quot; id=&amp;quot;styleme&amp;quot; style=&amp;quot;background-color: rgb(255,255,255)&amp;quot;&amp;gt;&lt;br /&gt;
I am changing!&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==compareEndPoints() Method==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HTML&amp;gt;&lt;br /&gt;
&amp;lt;HEAD&amp;gt;&lt;br /&gt;
&amp;lt;TITLE&amp;gt;TextRange.rupareEndPoints() Method&amp;lt;/TITLE&amp;gt;&lt;br /&gt;
&amp;lt;SCRIPT LANGUAGE=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
var fixedRange&lt;br /&gt;
function setAndShowRangeData() {&lt;br /&gt;
    var selectedRange = document.selection.createRange()&lt;br /&gt;
    var result1 = fixedRange.rupareEndPoints(&amp;quot;StartToEnd&amp;quot;, selectedRange)&lt;br /&gt;
    var result2 = fixedRange.rupareEndPoints(&amp;quot;StartToStart&amp;quot;, selectedRange)&lt;br /&gt;
    var result3 = fixedRange.rupareEndPoints(&amp;quot;EndToStart&amp;quot;, selectedRange)&lt;br /&gt;
    var result4 = fixedRange.rupareEndPoints(&amp;quot;EndToEnd&amp;quot;, selectedRange)&lt;br /&gt;
    &lt;br /&gt;
    B1.innerText = result1&lt;br /&gt;
    compare1.innerText = getDescription(result1)&lt;br /&gt;
    B2.innerText = result2&lt;br /&gt;
    compare2.innerText = getDescription(result2)&lt;br /&gt;
    B3.innerText = result3&lt;br /&gt;
    compare3.innerText = getDescription(result3)&lt;br /&gt;
    B4.innerText = result4&lt;br /&gt;
    compare4.innerText = getDescription(result4)&lt;br /&gt;
}&lt;br /&gt;
function getDescription(comparisonValue) {&lt;br /&gt;
    switch (comparisonValue) {&lt;br /&gt;
        case -1 :&lt;br /&gt;
            return &amp;quot;comes before&amp;quot;&lt;br /&gt;
            break&lt;br /&gt;
        case 0 :&lt;br /&gt;
            return &amp;quot;is the same as&amp;quot;&lt;br /&gt;
            break&lt;br /&gt;
        case 1 :&lt;br /&gt;
            return &amp;quot;comes after&amp;quot;&lt;br /&gt;
            break&lt;br /&gt;
        default :&lt;br /&gt;
            return &amp;quot;vs.&amp;quot;    &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
function init() {&lt;br /&gt;
    fixedRange = document.body.createTextRange()&lt;br /&gt;
    fixedRange.moveToElementText(fixedRangeElem)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;
&amp;lt;/HEAD&amp;gt;&lt;br /&gt;
&amp;lt;BODY onLoad=&amp;quot;init()&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;H1&amp;gt;TextRange.rupareEndPoints() Method&amp;lt;/H1&amp;gt;&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
&amp;lt;P&amp;gt;Select text in the paragraph in various places relative to&lt;br /&gt;
the fixed text range (shown in red).&amp;lt;/P&amp;gt;&lt;br /&gt;
&amp;lt;TABLE ID=&amp;quot;results&amp;quot; BORDER=1 &amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&amp;lt;TH&amp;gt;Property&amp;lt;/TH&amp;gt;&amp;lt;TH&amp;gt;Returned Value&amp;lt;/TH&amp;gt;&amp;lt;TH&amp;gt;Fixed Range vs. Selection&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
    &amp;lt;TD CLASS=&amp;quot;propName&amp;quot;&amp;gt;StartToEnd&amp;lt;/TD&amp;gt;&lt;br /&gt;
    &amp;lt;TD CLASS=&amp;quot;count&amp;quot; ID=&amp;quot;B1&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/TD&amp;gt;&lt;br /&gt;
    &amp;lt;TD CLASS=&amp;quot;count&amp;quot; ID=&amp;quot;C1&amp;quot;&amp;gt;Start of Fixed &lt;br /&gt;
    &amp;lt;SPAN ID=&amp;quot;compare1&amp;quot;&amp;gt;vs.&amp;lt;/SPAN&amp;gt; End of Selection&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
    &amp;lt;TD CLASS=&amp;quot;propName&amp;quot;&amp;gt;StartToStart&amp;lt;/TD&amp;gt;&lt;br /&gt;
    &amp;lt;TD CLASS=&amp;quot;count&amp;quot; ID=&amp;quot;B2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;TD CLASS=&amp;quot;count&amp;quot; ID=&amp;quot;C2&amp;quot;&amp;gt;Start of Fixed &lt;br /&gt;
    &amp;lt;SPAN ID=&amp;quot;compare2&amp;quot;&amp;gt;vs.&amp;lt;/SPAN&amp;gt; Start of Selection&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
    &amp;lt;TD CLASS=&amp;quot;propName&amp;quot;&amp;gt;EndToStart&amp;lt;/TD&amp;gt;&lt;br /&gt;
    &amp;lt;TD CLASS=&amp;quot;count&amp;quot; ID=&amp;quot;B3&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/TD&amp;gt;&lt;br /&gt;
    &amp;lt;TD CLASS=&amp;quot;count&amp;quot; ID=&amp;quot;C3&amp;quot;&amp;gt;End of Fixed &lt;br /&gt;
    &amp;lt;SPAN ID=&amp;quot;compare3&amp;quot;&amp;gt;vs.&amp;lt;/SPAN&amp;gt; Start of Selection&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
    &amp;lt;TD CLASS=&amp;quot;propName&amp;quot;&amp;gt;EndToEnd&amp;lt;/TD&amp;gt;&lt;br /&gt;
    &amp;lt;TD CLASS=&amp;quot;count&amp;quot; ID=&amp;quot;B4&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/TD&amp;gt;&lt;br /&gt;
    &amp;lt;TD CLASS=&amp;quot;count&amp;quot; ID=&amp;quot;C4&amp;quot;&amp;gt;End of Fixed &lt;br /&gt;
    &amp;lt;SPAN ID=&amp;quot;compare4&amp;quot;&amp;gt;vs.&amp;lt;/SPAN&amp;gt; End of Selection&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;/TABLE&amp;gt;&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
&amp;lt;P onMouseUp=&amp;quot;setAndShowRangeData()&amp;quot;&amp;gt;&lt;br /&gt;
Text, Text,Text,Text,Text,Text,Text,Text,Text,Text,&amp;lt;SPAN ID=&amp;quot;fixedRangeElem&amp;quot;&amp;gt;&lt;br /&gt;
Text,Text,Text,Text,Text,Text,Text,Text,&amp;lt;/SPAN&amp;gt;, &lt;br /&gt;
Text,Text,Text,Text,Text,Text,Text,Text,Text,Text,Text,Text,Text,Text,Text,Text,&amp;lt;/P&amp;gt;&lt;br /&gt;
&amp;lt;/BODY&amp;gt;&lt;br /&gt;
&amp;lt;/HTML&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Encipher and Decipher==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
JavaScript Application Cookbook&lt;br /&gt;
By Jerry Bradenbaugh&lt;br /&gt;
Publisher: O&amp;quot;Reilly &lt;br /&gt;
Series: Cookbooks&lt;br /&gt;
ISBN: 1-56592-577-7&lt;br /&gt;
*/ &lt;br /&gt;
 &lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&amp;lt;A href=&amp;quot;http://www.wbex.ru/Code/JavaScriptDownload/EncipherDecipher.zip&amp;quot;&amp;gt;EncipherDecipher.zip( 18 k)&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exploring the Bounding TextRange Properties==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HTML&amp;gt;&lt;br /&gt;
&amp;lt;HEAD&amp;gt;&lt;br /&gt;
&amp;lt;TITLE&amp;gt;TextRange Object Dimension Properties&amp;lt;/TITLE&amp;gt;&lt;br /&gt;
&amp;lt;STYLE TYPE=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
TD {text-align:center}&lt;br /&gt;
.propName {font-family: Courier, monospace}&lt;br /&gt;
&amp;lt;/STYLE&amp;gt;&lt;br /&gt;
&amp;lt;SCRIPT LANGUAGE=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
function setAndShowRangeData() {&lt;br /&gt;
    var range = document.selection.createRange()&lt;br /&gt;
    B1.innerText = range.boundingHeight&lt;br /&gt;
    B2.innerText = range.boundingWidth&lt;br /&gt;
    B3.innerText = range.boundingTop&lt;br /&gt;
    B4.innerText = range.boundingLeft&lt;br /&gt;
    B5.innerText = range.offsetTop&lt;br /&gt;
    B6.innerText = range.offsetLeft&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;
&amp;lt;/HEAD&amp;gt;&lt;br /&gt;
&amp;lt;BODY onResize=&amp;quot;setAndShowRangeData()&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;H1&amp;gt;TextRange Object Dimension Properties&amp;lt;/H1&amp;gt;&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
&amp;lt;P&amp;gt;Select text in the paragraph below.&amp;lt;/P&amp;gt;&lt;br /&gt;
&amp;lt;TABLE ID=&amp;quot;results&amp;quot; BORDER=1 &amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&amp;lt;TH&amp;gt;Property&amp;lt;/TH&amp;gt;&amp;lt;TH&amp;gt;Pixel Value&amp;lt;/TH&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
    &amp;lt;TD CLASS=&amp;quot;propName&amp;quot;&amp;gt;boundingHeight&amp;lt;/TD&amp;gt;&lt;br /&gt;
    &amp;lt;TD CLASS=&amp;quot;count&amp;quot; ID=&amp;quot;B1&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
    &amp;lt;TD CLASS=&amp;quot;propName&amp;quot;&amp;gt;boundingWidth&amp;lt;/TD&amp;gt;&lt;br /&gt;
    &amp;lt;TD CLASS=&amp;quot;count&amp;quot; ID=&amp;quot;B2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
    &amp;lt;TD CLASS=&amp;quot;propName&amp;quot;&amp;gt;boundingTop&amp;lt;/TD&amp;gt;&lt;br /&gt;
    &amp;lt;TD CLASS=&amp;quot;count&amp;quot; ID=&amp;quot;B3&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
    &amp;lt;TD CLASS=&amp;quot;propName&amp;quot;&amp;gt;boundingLeft&amp;lt;/TD&amp;gt;&lt;br /&gt;
    &amp;lt;TD CLASS=&amp;quot;count&amp;quot; ID=&amp;quot;B4&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
    &amp;lt;TD CLASS=&amp;quot;propName&amp;quot;&amp;gt;offsetTop&amp;lt;/TD&amp;gt;&lt;br /&gt;
    &amp;lt;TD CLASS=&amp;quot;count&amp;quot; ID=&amp;quot;B5&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&lt;br /&gt;
    &amp;lt;TD CLASS=&amp;quot;propName&amp;quot;&amp;gt;offsetLeft&amp;lt;/TD&amp;gt;&lt;br /&gt;
    &amp;lt;TD CLASS=&amp;quot;count&amp;quot; ID=&amp;quot;B6&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;/TABLE&amp;gt;&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
&amp;lt;P onMouseUp=&amp;quot;setAndShowRangeData()&amp;quot;&amp;gt;&lt;br /&gt;
text text text text text text text text text text text text text &lt;br /&gt;
text text text text text text text &amp;lt;br&amp;gt;text &lt;br /&gt;
text text text text text text text text text text text &lt;br /&gt;
text text text text text text text text text text &amp;lt;/P&amp;gt;&lt;br /&gt;
&amp;lt;/BODY&amp;gt;&lt;br /&gt;
&amp;lt;/HTML&amp;gt;&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Moving Text==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
Mastering JavaScript, Premium Edition&lt;br /&gt;
by James Jaworski &lt;br /&gt;
ISBN:078212819X&lt;br /&gt;
Publisher Sybex CopyRight 2001&lt;br /&gt;
*/&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Moving Text&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;script language=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
var heading = null&lt;br /&gt;
function moveText(milliseconds) {&lt;br /&gt;
 window.setInterval(&amp;quot;changePosition()&amp;quot;, milliseconds)&lt;br /&gt;
}&lt;br /&gt;
function changePosition() {&lt;br /&gt;
 var x = Math.random()*400&lt;br /&gt;
 var y = Math.random()*400&lt;br /&gt;
 if(document.getElementById)&lt;br /&gt;
  heading = document.getElementById(&amp;quot;moveme&amp;quot;)&lt;br /&gt;
 else if(navigator.appName == &amp;quot;Microsoft Internet Explorer&amp;quot;)&lt;br /&gt;
  heading = document.all.item(&amp;quot;moveme&amp;quot;)&lt;br /&gt;
 else if(document.layers)&lt;br /&gt;
  heading = document.layers[&amp;quot;moveme&amp;quot;]&lt;br /&gt;
 if(heading != null) {&lt;br /&gt;
  if(heading.style == null) { // Navigator 4&lt;br /&gt;
   heading.left = x&lt;br /&gt;
   heading.top = y&lt;br /&gt;
  }else if(heading.style.left != null) { // DOM-capable&lt;br /&gt;
   heading.style.left = x&lt;br /&gt;
   heading.style.top = y&lt;br /&gt;
  }else{ // IE 4&lt;br /&gt;
   heading.style.posLeft = x&lt;br /&gt;
   heading.style.posTop = y&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body onload=&amp;quot;moveText(2000)&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;moveme&amp;quot; style=&amp;quot;position:absolute;font-size:xx-large;&amp;quot;&amp;gt;This text moves!&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Two Search and Replace Approaches (with Undo)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
JavaScript Bible, Fourth Edition&lt;br /&gt;
by Danny Goodman &lt;br /&gt;
Publisher: John Wiley &amp;amp; Sons CopyRight 2001&lt;br /&gt;
ISBN: 0764533428&lt;br /&gt;
*/&lt;br /&gt;
&amp;lt;HTML&amp;gt;&lt;br /&gt;
&amp;lt;HEAD&amp;gt;&lt;br /&gt;
&amp;lt;TITLE&amp;gt;TextRange.findText() Method&amp;lt;/TITLE&amp;gt;&lt;br /&gt;
&amp;lt;SCRIPT LANGUAGE=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// global range var for use with Undo&lt;br /&gt;
var rng&lt;br /&gt;
// return findText() third parameter arguments&lt;br /&gt;
function getArgs(form) {&lt;br /&gt;
    var isCaseSensitive = (form.caseSensitive.checked) ? 4 : 0&lt;br /&gt;
    var isWholeWord = (form.wholeWord.checked) ? 2 : 0&lt;br /&gt;
    return isCaseSensitive ^ isWholeWord&lt;br /&gt;
}&lt;br /&gt;
// prompted search and replace&lt;br /&gt;
function sAndR(form) {&lt;br /&gt;
    var srchString = form.searchString.value&lt;br /&gt;
    var replString = form.replaceString.value&lt;br /&gt;
    if (srchString) {&lt;br /&gt;
        var args = getArgs(form)&lt;br /&gt;
        rng = document.body.createTextRange()&lt;br /&gt;
        rng.moveToElementText(rights)&lt;br /&gt;
        clearUndoBuffer()&lt;br /&gt;
        while (rng.findText(srchString, 10000, args)) {&lt;br /&gt;
            rng.select()&lt;br /&gt;
            rng.scrollIntoView()&lt;br /&gt;
            if (confirm(&amp;quot;Replace?&amp;quot;)) {&lt;br /&gt;
                rng.text = replString&lt;br /&gt;
                pushUndoNew(rng, srchString, replString)&lt;br /&gt;
            }&lt;br /&gt;
            rng.collapse(false)        &lt;br /&gt;
        }    &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
// unprompted search and replace with counter&lt;br /&gt;
function sAndRCount(form) {&lt;br /&gt;
    var srchString = form.searchString.value&lt;br /&gt;
    var replString = form.replaceString.value&lt;br /&gt;
    var i&lt;br /&gt;
    if (srchString) {&lt;br /&gt;
        var args = getArgs(form)&lt;br /&gt;
        rng = document.body.createTextRange()&lt;br /&gt;
        rng.moveToElementText(rights)&lt;br /&gt;
        for (i = 0; rng.findText(srchString, 10000, args); i++) {&lt;br /&gt;
            rng.text = replString&lt;br /&gt;
            pushUndoNew(rng, srchString, replString)&lt;br /&gt;
            rng.collapse(false)        &lt;br /&gt;
        }&lt;br /&gt;
        if (i &amp;gt; 1) {&lt;br /&gt;
            clearUndoBuffer()&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
document.all.counter.innerText = i&lt;br /&gt;
}&lt;br /&gt;
// BEGIN UNDO BUFFER CODE&lt;br /&gt;
// buffer global variables&lt;br /&gt;
var newRanges = new Array()&lt;br /&gt;
var origSearchString&lt;br /&gt;
// store original search string and bookmarks of each replaced range&lt;br /&gt;
function pushUndoNew(rng, srchString, replString) {&lt;br /&gt;
    origSearchString = srchString&lt;br /&gt;
    rng.moveStart(&amp;quot;character&amp;quot;, -replString.length)&lt;br /&gt;
    newRanges[newRanges.length] = rng.getBookmark()&lt;br /&gt;
}&lt;br /&gt;
// empty array and search string global&lt;br /&gt;
function clearUndoBuffer() {&lt;br /&gt;
    document.all.counter.innerText = &amp;quot;0&amp;quot;&lt;br /&gt;
    origSearchString = &amp;quot;&amp;quot;&lt;br /&gt;
    newRanges.length = 0&lt;br /&gt;
}&lt;br /&gt;
// perform the undo&lt;br /&gt;
function undoReplace() {&lt;br /&gt;
    if (newRanges.length &amp;amp;&amp;amp; origSearchString) {&lt;br /&gt;
        for (var i = 0; i &amp;lt; newRanges.length; i++) {&lt;br /&gt;
            rng.moveToBookmark(newRanges[i])&lt;br /&gt;
            rng.text = origSearchString&lt;br /&gt;
        }&lt;br /&gt;
        document.all.counter.innerText = i&lt;br /&gt;
        clearUndoBuffer()&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;
&amp;lt;/HEAD&amp;gt;&lt;br /&gt;
&amp;lt;BODY&amp;gt;&lt;br /&gt;
&amp;lt;H1&amp;gt;TextRange.findText() Method&amp;lt;/H1&amp;gt;&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
&amp;lt;FORM&amp;gt;&lt;br /&gt;
&amp;lt;P&amp;gt;Enter a string to search for in the following text:&lt;br /&gt;
&amp;lt;INPUT TYPE=&amp;quot;text&amp;quot; NAME=&amp;quot;searchString&amp;quot; SIZE=20 VALUE=&amp;quot;Law&amp;quot;&amp;gt; &amp;amp;nbsp;&lt;br /&gt;
&amp;lt;INPUT TYPE=&amp;quot;checkbox&amp;quot; NAME=&amp;quot;caseSensitive&amp;quot;&amp;gt;Case-sensitive &amp;amp;nbsp;&lt;br /&gt;
&amp;lt;INPUT TYPE=&amp;quot;checkbox&amp;quot; NAME=&amp;quot;wholeWord&amp;quot;&amp;gt;Whole words only&amp;lt;/P&amp;gt;&lt;br /&gt;
&amp;lt;P&amp;gt;Enter a string with which to replace found text:&lt;br /&gt;
&amp;lt;INPUT TYPE=&amp;quot;text&amp;quot; NAME=&amp;quot;replaceString&amp;quot; SIZE=20 VALUE=&amp;quot;legislation&amp;quot;&amp;gt;&amp;lt;/P&amp;gt;&lt;br /&gt;
&amp;lt;P&amp;gt;&amp;lt;INPUT TYPE=&amp;quot;button&amp;quot; VALUE=&amp;quot;Search and Replace (with prompt)&amp;quot;&lt;br /&gt;
 onClick=&amp;quot;sAndR(this.form)&amp;quot;&amp;gt;&amp;lt;/P&amp;gt;&lt;br /&gt;
&amp;lt;P&amp;gt;&amp;lt;INPUT TYPE=&amp;quot;button&amp;quot; VALUE=&amp;quot;Search, Replace, and Count (no prompt)&amp;quot;&lt;br /&gt;
 onClick=&amp;quot;sAndRCount(this.form)&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;SPAN ID=&amp;quot;counter&amp;quot;&amp;gt;0&amp;lt;/SPAN&amp;gt; items found and replaced.&amp;lt;/P&amp;gt;&lt;br /&gt;
&amp;lt;P&amp;gt;&amp;lt;INPUT TYPE=&amp;quot;button&amp;quot; VALUE=&amp;quot;Undo Search and Replace&amp;quot;&lt;br /&gt;
 onClick=&amp;quot;undoReplace()&amp;quot;&amp;gt;&amp;lt;/P&amp;gt;&lt;br /&gt;
&amp;lt;/FORM&amp;gt;&lt;br /&gt;
&amp;lt;DIV ID=&amp;quot;rights&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;A NAME=&amp;quot;article1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;H2&amp;gt;ARTICLE I&amp;lt;/H2&amp;gt;&lt;br /&gt;
&amp;lt;/A&amp;gt;&lt;br /&gt;
&amp;lt;P&amp;gt;&lt;br /&gt;
Congress shall make no law respecting an establishment of religion,&lt;br /&gt;
 or prohibiting the free exercise thereof; or abridging the freedom of speech,&lt;br /&gt;
 or of the press; or the right of the people peaceably to assemble, and to&lt;br /&gt;
 petition the government for a redress of grievances.&lt;br /&gt;
&amp;lt;/P&amp;gt;&lt;br /&gt;
[The rest of the text is snipped for printing here, but it is on the CD-ROM&lt;br /&gt;
 version.]&lt;br /&gt;
&amp;lt;/DIV&amp;gt;&lt;br /&gt;
&amp;lt;/BODY&amp;gt;&lt;br /&gt;
&amp;lt;/HTML&amp;gt;&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using the document.selection Object==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HTML&amp;gt;&lt;br /&gt;
&amp;lt;HEAD&amp;gt;&lt;br /&gt;
&amp;lt;TITLE&amp;gt;selection Object&amp;lt;/TITLE&amp;gt;&lt;br /&gt;
&amp;lt;SCRIPT LANGUAGE=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
function processSelection() {&lt;br /&gt;
    if (document.choices.process[0].checked) {&lt;br /&gt;
        status = &amp;quot;Selection is type: &amp;quot; + document.selection.type&lt;br /&gt;
        setTimeout(&amp;quot;emptySelection()&amp;quot;, 1000)&lt;br /&gt;
    } else if (document.choices.process[1].checked) {&lt;br /&gt;
        var rng = document.selection.createRange()&lt;br /&gt;
        document.selection.clear()&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
function emptySelection() {&lt;br /&gt;
    document.selection.empty()&lt;br /&gt;
    status = &amp;quot;Selection is type: &amp;quot; + document.selection.type&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;
&amp;lt;/HEAD&amp;gt;&lt;br /&gt;
&amp;lt;BODY&amp;gt;&lt;br /&gt;
&amp;lt;H1&amp;gt;IE selection Object&amp;lt;/H1&amp;gt;&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
&amp;lt;FORM NAME=&amp;quot;choices&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;INPUT TYPE=&amp;quot;radio&amp;quot; NAME=&amp;quot;process&amp;quot; CHECKED&amp;gt;De-select after two seconds&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;INPUT TYPE=&amp;quot;radio&amp;quot; NAME=&amp;quot;process&amp;quot;&amp;gt;Delete selected text.&lt;br /&gt;
&amp;lt;/FORM&amp;gt;&lt;br /&gt;
&amp;lt;P onMouseUp=&amp;quot;processSelection()&amp;quot;&amp;gt;&lt;br /&gt;
Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, &lt;br /&gt;
Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, &lt;br /&gt;
Text, Text, Text, Text, Text, Text, Text, Text, Text, &lt;br /&gt;
Text, Text, Text, Text, Text, Text, Text, &lt;br /&gt;
Text, Text, Text, Text, Text, Text, Text, &lt;br /&gt;
Text, &lt;br /&gt;
&amp;lt;/BODY&amp;gt;&lt;br /&gt;
&amp;lt;/HTML&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using the TextRectangle Object Properties==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
JavaScript Bible, Fourth Edition&lt;br /&gt;
by Danny Goodman &lt;br /&gt;
Publisher: John Wiley &amp;amp; Sons CopyRight 2001&lt;br /&gt;
ISBN: 0764533428&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTML&amp;gt;&lt;br /&gt;
&amp;lt;HEAD&amp;gt;&lt;br /&gt;
&amp;lt;TITLE&amp;gt;TextRectangle Object&amp;lt;/TITLE&amp;gt;&lt;br /&gt;
&amp;lt;SCRIPT LANGUAGE=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// preserve reference to last clicked elem so resize can re-use it&lt;br /&gt;
var lastElem&lt;br /&gt;
// TextRectangle left tends to be out of registration by a couple of pixels&lt;br /&gt;
var rectLeftCorrection = 2&lt;br /&gt;
// process mouse click&lt;br /&gt;
function handleClick() {&lt;br /&gt;
    var elem = event.srcElement&lt;br /&gt;
    if (elem.className &amp;amp;&amp;amp; elem.className == &amp;quot;sample&amp;quot;) {&lt;br /&gt;
        // set hiliter element only on a subset of elements&lt;br /&gt;
        lastElem = elem&lt;br /&gt;
        setHiliter()&lt;br /&gt;
    } else {&lt;br /&gt;
        // otherwise, hide the hiliter&lt;br /&gt;
        hideHiliter()&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
function setHiliter() {&lt;br /&gt;
    if (lastElem) {&lt;br /&gt;
        var textRect = lastElem.getBoundingClientRect()&lt;br /&gt;
        hiliter.style.pixelTop = textRect.top + document.body.scrollTop&lt;br /&gt;
        hiliter.style.pixelLeft = textRect.left + document.body.scrollLeft - rectLeftCorrection&lt;br /&gt;
        hiliter.style.pixelHeight = textRect.bottom - textRect.top&lt;br /&gt;
        hiliter.style.pixelWidth = textRect.right - textRect.left&lt;br /&gt;
        hiliter.style.visibility = &amp;quot;visible&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
function hideHiliter() {&lt;br /&gt;
    hiliter.style.visibility = &amp;quot;hidden&amp;quot;&lt;br /&gt;
    lastElem = null&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;
&amp;lt;/HEAD&amp;gt;&lt;br /&gt;
&amp;lt;BODY onClick=&amp;quot;handleClick()&amp;quot; onResize=&amp;quot;setHiliter()&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;H1&amp;gt;TextRectangle Object&amp;lt;/H1&amp;gt;&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
&amp;lt;P&amp;gt;Click on any of the four colored elements in the paragraph below and watch&lt;br /&gt;
 the highlight rectangle adjust itself to the element&amp;quot;s TextRectangle object.&lt;br /&gt;
&amp;lt;P CLASS=&amp;quot;sample&amp;quot;&amp;gt;Lorem ipsum dolor sit amet, &amp;lt;SPAN CLASS=&amp;quot;sample&amp;quot;&lt;br /&gt;
 STYLE=&amp;quot;color:red&amp;quot;&amp;gt;consectetaur adipisicing elit&amp;lt;/SPAN&amp;gt;, sed do eiusmod tempor&lt;br /&gt;
 &amp;lt;SPAN CLASS=&amp;quot;sample&amp;quot; STYLE=&amp;quot;color:green&amp;quot;&amp;gt;incididunt ut labore et dolore &amp;lt;SPAN&lt;br /&gt;
 CLASS=&amp;quot;sample&amp;quot; STYLE=&amp;quot;color:blue&amp;quot;&amp;gt;magna aliqua&amp;lt;/SPAN&amp;gt;. Ut enim adminim veniam,&lt;br /&gt;
 quis nostrud exercitation ullamco&amp;lt;/SPAN&amp;gt; laboris nisi ut aliquip ex ea commodo&lt;br /&gt;
 consequat. Duis aute irure dolor in reprehenderit involuptate velit esse cillum&lt;br /&gt;
 dolore eu fugiat nulla pariatur.&amp;lt;/P&amp;gt;&lt;br /&gt;
&amp;lt;DIV ID=&amp;quot;hiliter&amp;quot; STYLE=&amp;quot;position:absolute; background-color:salmon; z-index:-1;&lt;br /&gt;
 visibility:hidden&amp;quot;&amp;gt;&amp;lt;/DIV&amp;gt;&lt;br /&gt;
&amp;lt;/BODY&amp;gt;&lt;br /&gt;
&amp;lt;/HTML&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>