当前位置:  编程技术>WEB前端

文本修改留痕

    来源: 互联网  发布时间:2014-09-06

    本文导语:  在办公自动化,公文审核的时候,就需要用到 留痕操作了,就是把修改的东西直接在文本上显示,而不直接改动它。在以前,我没有用VML去做,很勉强的用 TextRange 改变文本的颜色,然后增加一个层显示更改信息。第一次修改...

在办公自动化,公文审核的时候,就需要用到 留痕操作了,就是把修改的东西直接在文本上显示,而不直接改动它。在以前,我没有用VML去做,很勉强的用 TextRange 改变文本的颜色,然后增加一个层显示更改信息。第一次修改还可以实现,但不能做到再次修改,因为,第二次修改的时候,那些原来创建的对象都消失了,而这些对象都是通过 Select 操作得到的,用户不选择,脚本就没有办法创建那些对象。
    不久前,我想到了 VML ,开始还觉得是不可能的事情,但我发现了 TextRange 对象一个很强大的方法 getClientRects(),这个方法可以返回 TextRange 对象包含的每一行的矩形信息。意思是说,如果你用鼠表选择一段文本,文本会自动高亮显示,这样看上去就是一块块矩形组成的不规则图形。getClientRects 方法就可以得到这些矩形的坐标和高宽,这样一来,就可以在选择的文本外套一层 VML 画的矩形,Oh my god...真是酷呆了。当我第一次看到它的时候,兴奋的抱着小白(猫)满屋子乱跳。     接下来,讲讲 TextRange 对象以及 getClientRects 和 VML 结合画痕迹:
    TextRange 对象,顾名思义,文本区域,就是网页上的一部分区域,可以是文本也可以是图像和别的段落格式。所有能用鼠标选择的都可以变成 TextRange 对象。IE4 的时候就出现了。TextRange 有个强大的方法就是 execCommand(),它可以执行很多命令,动态更改网页中内容、样式。创建 TextRange 对象一般有两种途径,一种是用户选择了一段文本,可以使用 var oTextRange=document.selection.createRange(); 还有种就是直接把document 创建成 TextRange :var oTextRange=document.createTextRane() 。不知道有没有注意,两个方式使用的函数不一样,第一个因为本省就是文字了,所有使用 createRange(), 第二个不能确定是否都是文字,所有,必须用 createTextRange()。
    使用 getClientRects 返回的是一个 TextRectangle 对象,它是一个集合,没个子集拥有四个属性 bottom,top,left,right ,就是两个角的坐标,这个坐标值是相对于页面的,所以可以直接应用到 VML 中来。
function createRect(num)
{
 var newMark=document.createElement("
");
 edit.insertBefore(newMark);
 var oRcts = oTempRange.getClientRects();//oTempRange是一个 TextRange 对象
 for(var i=0;i

    
 
 

您可能感兴趣的文章:

  • windows/windows 7/windows 8 下打开查看、修改及保存超大(GB级)文本文件及其它类型文件的工具-PilotEdit
  • 请问html中的文本输入框中如何实现静态的不可修改文本
  • linux修改所有文件类型为文本类型
  • 编辑器中如何修改文本
  • 请教shell的问题,关于文本文件的修改和添加
  • 在哪个文件下修改就可以把linux有缺省图形界面进入文本界面?
  • rh8.0下用文本方式登陆如何修改/etc/X11/XFree86Config?
  • 在终端下修改文本文件的内容,如将某行的中db_user替换成extmail,非交互式的。
  • 请教!Linux系统下如何修改文本文件的最大值?
  • UNIX下 wc,grep,和修改文本文件的c程序的源程序那位高人能否提供一份? zero_baby@163.net
  • C语言实现修改文本文件中特定行的实现代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Strings(字符串) 成员 append():在字符串的末尾添加文本
  • 在AIX的tmp目录下面,有很多个文本文件,现在要把每个文本文件里的一些信息提取出来,放在一个文本文件里!
  • linux bash shell命令:grep文本搜索工具简介
  • jquery 文本框回车事件 跳到下一个文本框
  • HTML5 <bdo> 标签:覆盖默认的文本方向
  • 在文本控件jtextpane中如何把“选中文本”事件屏蔽??
  • html5/css3文本阴影(text-shadow)详解及示例
  • 如何从文本文件每次读入一行然后处理直到文本结束
  • linux bash shell命令:文本搜索工具grep中用于egrep和 grep -E的元字符扩展集
  • 能否在输入两个文本框时,第三个文本框自动等于前者之和
  • HTML5 <b> 标签-定义粗体的文本
  • 用word2000将文档存为纯文本文件,所得文本文件不满足AScii标准?请教。
  • CSS控制长文本内容显示(截取的地方用省略号代替)
  • 请问UNIX下的文本格式和DOS下的文本格式有什么区别呀?
  • linux bash shell命令:文本搜索工具Grep命令选项及实例
  • HTML教程 iis7站长之家
  • linux bash shell命令:文本搜索工具grep正则表达式元字符集(基本集)
  • 如何用Linux中的文本编辑工具提取文本文件中的指定内容?
  • HTML 文本格式化标签大全
  • 给定开始和结束行,怎么从一个文本文件中提取一段文本?
  • HTML超文本标记语言教程及实例
  • 流文件的抓包与文本文件的抓包不同吗?为什么文本正常但流文件抓得包却少得多?




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3