TextRange 对象 TFOOT 元素 | tFoot 对象 DHTML 对象

TextRectangle 对象


指定包含元素或 TextRange 对象中一行文本的矩形。

成员表

属性描述
bottom 设置或获取围绕对象内容的矩形上边坐标。
left 设置或获取围绕对象内容的矩形左边坐标。
right 设置或获取围绕对象内容的矩形右边坐标。
top 设置或获取围绕对象内容的矩形下边坐标。

注释

对一个元素或文本范围对象应用 getClientRects 方法可以获得一个 TextRectangle 对象的集合。getClientRects 方法返回一个矩形的集合,其中包括每个矩形相对于客户区的上、下、左、右的坐标。

在下面取自徐志摩《再别康桥》的诗句中,b 元素(粗体文本)中共包含四个 TextRectangle 对象。

<P>悄悄的<B>我走了,<BR>
正如我悄悄的来;<BR>
我挥一挥衣袖,<BR>
不带走</B>一片云彩。
</P>

这四个 TextRectangle 对象是:

  1. “我走了,”
  2. “正如我悄悄的来;”
  3. “我挥一挥衣袖,”
  4. “不带走”

如果你更改包含此文本的窗口的大小,TextRectangle 对象不会更新。由于对象是布局的快照,应该在 onresize 事件触发后随之更新对象。

TextRectangle 的宽度可能与其包含的 TextRange 的宽度并不相等。因为 TextRange 与文本的宽度相等,而 TextRectangle 却与包含文本的元素宽度相等。

此对象在 Microsoft® Internet Explorer 5 的脚本中可用。

示例

下面的例子演示了如何使用 getClientRectsgetBoundingClientRect 方法突出显示对象中的文本行。

<HEAD>
<SCRIPT>
var rcts;
var keyCount=0;

function Highlight(obj) {            
    rcts = obj.getClientRects();
    rctLength= rcts.length;

    if (keyCount > rctLength-1) {
        idBeige.style.display="none";
        keyCount = 0
    }

    // 设置黄色 DIV 的渲染属性
    cdRight = rcts[keyCount].right + idBody.scrollLeft;
    cdLeft = rcts[keyCount].left + idBody.scrollLeft;
    cdTop = rcts[keyCount].top + idBody.scrollTop;
    cdBottom = rcts[keyCount].bottom + idBody.scrollTop;
    idYellow.style.top = cdTop;
    idYellow.style.width = (cdRight-cdLeft) - 5;
    idYellow.style.display = 'inline';

    // 设置土色 DIV 的渲染属性
    bndRight = obj.getBoundingClientRect().right +
	    idBody.scrollLeft;
    bndLeft = obj.getBoundingClientRect().left +
	    idBody.scrollLeft;
    bndTop = obj.getBoundingClientRect().top +
	    idBody.scrollTop;
    idBeige.style.top = bndTop;
    idBeige.style.width = (bndRight-bndLeft) - 5;
    idBeige.style.height = cdTop - bndTop;
    if (keyCount>0){
        idBeige.style.display = 'inline';
    }
    keyCount++;
}
</SCRIPT>
</HEAD>

<BODY ID="idBody">
<DIV ID="oID_1" onclick="Highlight(this)"
    onkeydown="Highlight(this)">
在此会有大量的文本。如果多次单击此处的文本,
将会看到每单击一次鼠标,就会有一行被突出显示。
如果每行都被突出显示了,这个过程就会从第一行
重新开始。
</DIV>
<DIV STYLE="position:absolute; left:5; top:400;
z-index:-1; background-color:yellow; display:none"
ID="idYellow"></DIV>
<DIV STYLE="position:absolute; left:5; top:400;
z-index:-1; background-color:beige; display:none"
ID="idBeige"></DIV>
</BODY>
此特性需要 Microsoft® Internet Explorer 5.0 或以后版本。请单击下面的图标安装最新版本。然后重新装入此页再查看示例。

下面的例子是用了 TextRectangle 集合和 getClientRectsgetBoundingClientRect 方法决定元素中文本矩形的位置。在行中左对齐的文本并不扩展到包含文本的外框的右边。使用此集合,你可以确定仅仅围绕在每行内容外侧的矩形的坐标。示例代码将读取这些矩形的坐标并演示一个小球只在文本处划过,而不是行尾。

<HEAD>
<SCRIPT>
var timid = -1;
var timoID_2 = -1;
var nLine;
var nPosInLine;
var oRcts;
var nDivLen;
var nEraser;

function LoadDone() {
    oTextRange = document.body.createTextRange();
    // 获得范围的绑定矩形
    oRcts = oTextRange.getClientRects();
    nLine = 0;
    oBndRct = obj.getBoundingClientRect();
    nDivLen = oBndRct.right - oBndRct.left + 1;
    MoveTo();
}

function MoveTo() {
    if (nLine >= oRcts.length) {
	    nLine = 0;
	}
    obj.style.top = oRcts[nLine].top;
    nPosInLine = oRcts[nLine].left;
    nEraser = 0;
    timoID_2 = setInterval("MoveToInLine()",60);
}

function MoveToInLine() {
    if (nPosInLine >= oRcts[nLine].right - nDivLen) {
        clearInterval(timoID_2);
        timoID_2 = -1;
        obj.style.left = oRcts[nLine].right - nDivLen;
        nLine++;
        timid = setTimeout("MoveTo()", 100);
        return;
    }
    if (nEraser == 0) {
	    nEraser = 1;
	}
    else {
	    nEraser = 0;
	}
	im.src = "/workshop/graphics/dot.gif";
    obj.style.left = nPosInLine;
    nPosInLine += 3;
}

function End() {
    if(timid != -1) {
	    clearInterval(timid);
        timid = -1;
	}
    if(timoID_2 != -1) {
	    clearInterval(timoID_2);
        timoID_2 = -1;
	}
}
</SCRIPT>
</HEAD>

<BODY ID="bodyid" onload="LoadDone()"
    onresize="End();LoadDone();" onunload="End()">
<P STYLE="text-align:center">
<B>The quick brown fox jumps over the lazy dog.</B>
</P>
<DIV ID="obj" STYLE="position:absolute">
<IMG ID="im" SRC="/workshop/graphics/dot.gif"
    BORDER=0 HEIGHT=16 WIDTH=16>
</DIV>
</BODY>
此特性需要 Microsoft® Internet Explorer 5.0 或以后版本。请单击下面的图标安装最新版本。然后重新装入此页再查看示例。

标准信息

此对象定义在 HTML 3.2 非 Microsoft 链接 中。