PageOffice 开发者中心 PageOffice 开发者中心
首页
文档
  • 后端Java手册 (opens new window)
  • 后端.netcore手册 (opens new window)
  • 前端JavaScript手册 (opens new window)
下载
购买 (opens new window)
首页
文档
  • 后端Java手册 (opens new window)
  • 后端.netcore手册 (opens new window)
  • 前端JavaScript手册 (opens new window)
下载
购买 (opens new window)
  • 开始

  • 通用控制

  • Word

    • 常用控制

      • 强制留痕模式编辑
      • 显示痕迹列表效果
        • 只读打开文档
        • 文件在线安全浏览
        • 比较两个Word文件的内容差异
        • 编辑时禁止拷贝到外部
        • 禁止Word中鼠标右键
        • 多用户同时编辑
        • Word多文件合并
        • 控制Word编辑区域(局部编辑)
        • 添加水印
        • 插入分页符
        • 模板套红
        • 从模板起草文件
        • 创建空白的word、excel、ppt
        • 用户自定义模板中数据区域
        • 用户自定义模板中数据标签
        • 数据区域与数据标签的区别
        • Word全文检索
        • Word套打
        • 锁定文本样式
        • 用前端框架内置对话框在Word中填空填表
        • 保存Word首页为图片
      • 动态填充

      • 用户输入提交

      • JS控制

    • Excel

    • PDF

    • FileMaker

    • PPT

    • 更多

    目录

    显示痕迹列表效果

    # 显示痕迹列表效果

    • 查看本示例演示效果(Windows版)
    • 查看本示例演示效果(国产版)
    • 本示例关键代码的编写位置,请参考“开始 - 快速上手”里您所使用的开发语言框架的最简集成代码

    注意

    本文中展示的代码均为关键代码,复制粘贴到您的项目中,按照实际的情况,例如文档路径,用户名等做适当修改即可使用。

    在实际应用中,为了方便查找和定位当前页面的某个痕迹,通常采用将当前文档中的所有痕迹遍历,并以列表方式显示到当前页面某个位置。

    一般需要显示的痕迹属性包括:痕迹的用户名,痕迹的内容,痕迹的日期时间等。PageOffice 客户端控件提供了 RevisionsAsJson 对象来实现对痕迹的遍历。

    RevisionsAsJson

    • author 代表当前痕迹的用户名
    • date 代表当前痕迹的日期
    • type 代表痕迹的类型
    • GetTextFromRevision 代表痕迹的文本内容

    # 后端代码

    本示例无后端关键代码。

    # 前端代码

      //获取痕迹列表,返回一组痕迹的<li>标签
      function  getRevisionList(){
      	var revisionList = "";
      	var revisionsJson=pageofficectrl.word.RevisionsAsJson;
      	var revisionObj = JSON.parse(revisionsJson);
      
      	//遍历痕迹
      	for(var key in revisionObj){
      		let str = '';
      		let revisionAuthor = revisionObj[key].author; //author属性为当前痕迹的用户名
      		let revisionDate = revisionObj[key].date; //date属性为当前痕迹的日期
      
      		str = dateFormat(revisionDate, '[yyyy-MM-dd HH:mm]') + revisionAuthor + ':';
      
      		if (revisionObj[key].type === 1) { //type代表当前痕迹的类型为“插入”类型
      			let revisionType = '插入';
      			let revisionTxt = pageofficectrl.word.GetTextFromRevision(parseInt(revisionObj[key].id));//获取当前痕迹的文本内容
      			str = str + revisionType +':' + revisionTxt;
      		}
      		else if (revisionObj[key].type === 2) { //type代表当前痕迹的类型为“删除”类型
      			let revisionType = '删除';
      			let revisionTxt = pageofficectrl.word.GetTextFromRevision(parseInt(revisionObj[key].id));
      			str = str + revisionType +':' + revisionTxt;
      		}
      		else {
      			let revisionType = '调整格式或样式。';
      			str = str + revisionType ;
      		}
      
      		revisionList += "<li><a href='#' onclick='goToRevision(" + key + ")'>" + str + "</a></li>";
      	}
      
      	return revisionList;
      }
      
      //定位到一个痕迹
      function goToRevision(key) {
      	pageofficectrl.word.SelectRevision(key);
      }
      
      function dateFormat(date, format) {
      	date = new Date((date-25569)*86400*1000);
      	date = roundTimeToSeconds(date);
      	date.setHours(date.getHours() - 8);
      	var o = {
      		'M+': date.getMonth() + 1, //month
      		'd+': date.getDate(), //day
      		'H+': date.getHours(), //hour
      		'm+': date.getMinutes(), //minute
      		's+': date.getSeconds(), //second
      		'q+': Math.floor((date.getMonth() + 3) / 3), //quarter
      		'S': date.getMilliseconds() //millisecond
      	};
      
      	if (/(y+)/.test(format))
      		format = format.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
      
      	for (var k in o)
      		if (new RegExp('(' + k + ')').test(format))
      			format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length));
      
      	return format;
      }
      
      function roundTimeToSeconds(date) {
      	var seconds = date.getSeconds();
      	if (seconds < 30) {
      		date.setSeconds(0);
      	} else {
      		date.setSeconds(0);
      		date.setMinutes(date.getMinutes() + 1);
      	}
      	return date;
      }
      
      // 把所有痕迹的<li>标签放到一个<ul>中
      function refreshList() {
      	document.getElementById("ul_Comments").innerHTML = getRevisionList();
      }
      
      // Make sure to add code blocks to your code group
      上次更新: 2024/11/20, 16:35:49
      PageOffice | Copyright © 2013-2026 卓正软件 京ICP备12010902号-2 京公网安备 11010502019270号
      • 跟随系统
      • 浅色模式
      • 深色模式
      • 阅读模式