html 鼠标悬停批注,HTML 页面添加批注
最近在做一个学校的XXX系统项目,因项目有个需求就是要像在word里面的添加批注功能一样,就是选中一段文字,然后为这些页面添加一些额外的信息;刚开始我们的方案是记录选中内容的下标,然后保存到数据库中,当要显示的时候就再数据库中读取下面然后在客户端用js合并,做着做着发现这种方法很烦,最后我们决定采用另一种方案,就是在在选中的文字两端加上自定义标记,批注的内容就是保存到自定义标签的属性里面去。
想法是有了,开始着手做Demo了,一开始我们就像在CKEditor里面做一个插件,看了一天的CKEditor的API和源码,搞到一头雾水,写CKEditor插件太复杂了,有要什么初始化、又要什么execute、一堆东西,最后放弃了这方案,最后决定还是自己写一个添加批注的工具出来,写到一半的时候竟发现一个国内强大的HTML编辑器KindEditor,只需几行代码就解决了(为什么不早点发现(T-T));既然工具已经写了一半了,还是把它写完了,最终Demo出来了。
在这里就跟大家分享一下,大家看一下还有没有好的做法。
/**
* @作者:WilliamSha
* @时间:2011-10-18 下午07:52:01
* @项目名:XXX
* @描述:操作批注工具
*/
//初始化页面元素
$(function(){
$(".content").mouseup(function(e){
var selectedText ;
if(window.getSelection) {
selectedText = window.getSelection().toString();
}
else if(document.selection && document.selection.createRange) {
selectedText = document.selection.createRange().text;
}
if(selectedText){
$("#icon").css({
"left" : e.clientX+1,
"top" : e.clientY-30
}).fadeIn(300);
}
else {
$("#icon").hide();
}
});
$("#icon").hover(function(){
$(this).children().removeClass("tipsIcon");
}
,
function(){
$(this).children().addClass("tipsIcon");
}).click(function() {
$("#icon").hide();
addPostil();
});
});
//添加批注
function addPostil() {
//IE支持的range对象
var ie_range ;
//其他浏览器的range对象
var other_range ;
if(window.getSelection) {
other_range = window.getSelection().getRangeAt(0);
}
else if(document.selection && document.selection.createRange) {
ie_range = document.selection.createRange();
}
art.dialog({
id:'inputDialog',
title:'添加批注',
content:'',
lock:true
}
, function(){
var value = document.getElementById("postil").value;
if(!value){
art.dialog({
content:'批注内容不能为空!', time: 1
});
return false;
}
if(other_range) {
/*
//IE之外的浏览器,如果在选择内容包含其他标签的一部分的时候会报异常
var mark = document.createElement("ins");
mark.setAttribute("comment", value);
mark.className = "postil";
mark.id=new Date().getTime();
other_range.surroundContents(mark);
*/
var selected = other_range.extractContents().textContent;
var text = "[ins id='"+(new Date().getTime())+"' comment='"+value+"']"+selected+"[/ins]";
var textNode = document.createTextNode(text);
other_range.insertNode(textNode);
var content = $(".content").html();
var reg = /\[ins id='(\d*)' comment='([\w\W]*)']([\w\W]*)\[\/ins]/gi;
reg.test(content);
var id = RegExp.$1,
comment = RegExp.$2,
c = RegExp.$3;
var reHtml = ""+c+"";
content = content.replace(reg, reHtml);
$(".content").html(content);
}
else if(ie_range) {
ie_range.pasteHTML(""+ie_range.htmlText+"");
ie_range=null;
}
loader();
});
}
//解析批注
function loader(){
var $list = $(".list");
$list.children().remove();
$.each($(".content ins"), function(a, b){
var content = $(b).attr("comment");
var $postil = $("
");
$postil.hover(function(){
$(this).css("border-color", "red");
$("#"+$(this).attr("forid")+"").removeClass().addClass("postilFocus");
}
,
function(){
$(this).css("border-color", "#ddd");
$("#"+$(this).attr("forid")+"").removeClass().addClass("postil");
});
$(b).hover(function(){
$(this).removeClass().addClass("postilFocus");
$("div[forid='"+$(this).get(0).id+"']").css("border-color", "red");
}
,
function(){
$(this).removeClass().addClass("postil");
$("div[forid='"+$(this).get(0).id+"']").css("border-color", "#ddd");
});
$list.append($postil);
});
}
//删除批注
function removePostil(arg){
var $div = $(arg).parent();
var id = $div.attr("forid");
var $source = $("#"+id);
var text = $source.after($source.html());
$source.remove();
loader();
}
截图如下:
html 鼠标悬停批注,HTML 页面添加批注相关推荐
- js对文字批注_HTML 页面添加批注 - JavaScript - ITeye
/** * @作者:WilliamSha * @时间:2011-10-18 下午07:52:01 * @项目名:XXX * @描述:操作批注工具 */ //初始化页面元素 $(function(){ ...
- ppt怎么加注解文字_向PPT2013演示文稿中添加批注将反馈和想法添加到演示文稿...
向PPT2013演示文稿中添加批注将反馈和想法添加到演示文稿 时间:2014-01-07 作者:snow 来源:互联网 使用批注来将反馈和想法添加到演示文稿.将批注附加到幻灯片中的某个字母或单 ...
- Activiti添加批注(comment)信息
在每次提交任务的时候需要描述一些批注信息,例如:请假流程提交的时候要描述信息为什么请假,如果领导驳回可以批注驳回原因等 1.添加批注 // 由于流程用户上下文对象是线程独立的,所以要在需要的位置设置, ...
- VBA实现为Excel中自定义名称的单元格添加批注
一.本地office中通过创建宏实现此需求 1.打开一个Excel文件,在需要插入批注的单元格右击-定义名称(myTable1).点击菜单栏-视图-宏-查看宏-输入宏名-创建宏 2.进入VBA编辑 ...
- Word如何添加批注
我们有时需要对word文本添加批注,那么如何添加呢?下面就以我常用的软件来介绍下吧. 1,打开word,选中要添加批注的文本. 2,然后点击工具栏--"协作"--"添加评 ...
- speedoffice(Word)如何添加批注
我们有时需要对word文本添加批注,那么如何添加呢?下面就以我常用的软件来介绍下吧. 1.打开word文档,选中要添加批注的内容,点击"协作"--"添加评论". ...
- Axure 交互学习1 基础页面跳转、鼠标悬停样式
这是一个非常简单基础的页面跳转 1.首先创建两个页面 page1和page2 page1放一个按钮 page2放一个按钮 2.为page1的按钮添加交互动作 1⃣️选中按钮 2⃣️在交互中选择 ...
- 利用伪元素给图片在鼠标悬停时添加背景图片
利用伪元素给图片在鼠标悬停的时候添加背景图片,这种效果在电影网站上使用的比较频繁,主要是鼠标悬停的时候显示出播放的图标,点击图片链接后就会进入视频详情页面,而使用伪元素是为了使我们的html代码更加简 ...
- Speedoffice(ppt)如何添加批注
我们有时需要对PPT文本添加批注,那么如何添加呢?下面就以我常用的软件来介绍下吧. 1,打开PPT,选中要添加批注的文本. 2,然后点击工具栏--"插入"--"批注&qu ...
最新文章
- 9个常用iptables配置实例
- S/4HANA生产订单增强WORKORDER_UPDATE方法
- [转] 鼠标移入/移出颜色渐变
- 遗传算法(Genetic Algorithm )+C++实现解决TSP问题
- “面试不败计划”: java语言基础面试题(三)
- python爬虫登陆网页版腾讯课堂
- idea重写接口没有@override_接口和抽象有什么区别?
- 2021年中国仪表阀市场趋势报告、技术动态创新及2027年市场预测
- 准确率(Precision)、召回率(Recall)、F值(F-Measure)、ROC、AUC
- 逐步完善自己的3D引擎
- ajajx请求php能设置cookie,为什么在AJAX请求返回后浏览器没有设置cookie?
- python实现时序异常检测_时序预测 01 - 异常检测 Smoothed z-score algorithm 标准化的一些实践、调参总结 -Python/pandas/numpy...
- matlab 关键路径函数,用线性规划建模(确定参数)关键路径法
- 不仅仅是土豆_设计成功不仅仅需要设计技能
- SPU和SKU有什么区别
- Centos使用chrony做时间同步
- excel表格生成图片的方式
- php活体检测,双目活体检测摄像头,人脸识别SDK,红外活体算法
- win10 android软件下载,windows10模拟器安卓版
- Java opencv4 如何识别一张图片的你想要的物体的数量
热门文章
- JS 实战: Drag 点击拖曳效果
- 友价商城源代码插件汇总
- Micropython实现表情识别控制小车运行
- PC机插入麦克风后没有说话没有声音
- 互斥量、临界区、信号量、事件标志组和消息邮箱(转)
- catia v5r18 百度云_catia v5r18 64位免费版 附带安装教程
- 如何把catia完全卸载干净_catia卸载不了怎么解决-解决catia无法卸载的方法 - 河东软件园...
- YFCMF,设置跳转后台首页
- 计算机word表格求和怎么操作,Word表格编辑技巧:利用“公式”命令求和-word技巧-电脑技巧收藏家...
- 并发编程笔记——第六章 Java并发包中锁原理剖析