test.htm
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<title>公文留痕</title>
</head>
<style>
v\:* { behavior: url(#default#vml) }
</style>
<link rel="stylesheet" href="pub_document.css">
<script language="jscript">
var nowid=0;
var popid=0;
var padheight=0;
function init()
{
newid=parseint(document.all("n").value);
}
function createdelline(num)
{
var newmark=document.createelement("<div id=mark"+num+"></div>");
memo.insertbefore(newmark);
var orcts = otemprange.getclientrects();
for(var i=0;i<orcts.length;i++)
{
var t=orcts[i].top;
var l=orcts[i].left;
var r=orcts[i].right;
var b=orcts[i].bottom;
var newrect=document.createelement("<v:roundrect oncontextmenu=popid="+num+";popup(); id=rect"+num+"no"+i+" style=position:absolute;visibility:hidden filled=t fillcolor=red strokecolor=red strokeweight=1pt></v:roundrect>");
newmark.insertbefore(newrect);
newrect.style.postop=t+document.body.scrolltop-2+(b-t)/2;
newrect.style.posleft=l-2;
newrect.style.width=r-l;
newrect.style.height=2;
newrect.style.visibility="";
}
}
function createrect(num)
{
var newmark=document.createelement("<div id=mark"+num+"></div>");
edit.insertbefore(newmark);
var orcts = otemprange.getclientrects();
for(var i=0;i<orcts.length;i++)
{
var t=orcts[i].top;
var l=orcts[i].left;
var r=orcts[i].right;
var b=orcts[i].bottom;
var newrect=document.createelement("<v:roundrect oncontextmenu=popid="+num+";popup(); id=rect"+num+"no"+i+" style=position:absolute;visibility:hidden filled=f strokecolor=red strokeweight=1.5pt></v:roundrect>");
newmark.insertbefore(newrect);
newrect.style.postop=t+document.body.scrolltop-3;
newrect.style.posleft=l-2;
newrect.style.width=r-l;
newrect.style.height=b-t;
newrect.style.visibility="";
}
}
var popsrcelement=null;
var selectok=false;
var otemprange=null;
function createtemprange()
{
hidemenu();
doc_click();
if(document.selection.type=="text")
{
otemprange=document.selection.createrange(); //把选择的文本创建成 textrange 对象
if(otemprange.htmltext!=""){ //检查选择的是否为空字符
rangeposleft=otemprange.boundingleft;
rangepostop =otemprange.offsettop+document.body.scrolltop+otemprange.boundingheight;
otemprange.execcommand("backcolor",true,"#99ccff");;
otemprange.execcommand("unselect");
selectok=true;
}
else
selectok=false;
}
}
function doc_click()
{
dragapproved=false;
if(self.event.srcelement.classname=="item")
return;
if((self.event.button==1)&&(otemprange!=null)) //取消临时标记
{
otemprange.execcommand("backcolor",true,"#efefef");
otemprange=null;
selectok=false;
}
}
function popup()
{
popsrcelement=event.srcelement; //获得 popup 事件源
self.event.returnvalue=false;
setbutton();
var newxx=event.x+document.body.scrollleft-3;
var newyy=event.y+document.body.scrolltop-3;
if((event.clienty+135)>document.body.clientheight) newyy=newyy-135;
if((event.clientx+120)>document.body.clientwidth) newxx=newxx-120;
popmenu.style.posleft=newxx;
popmenu.style.postop=newyy;
popmenu.style.display="";
}
function setbutton()
{
document.all.item1.disabled=true;
document.all.item2.disabled=true;
document.all.item3.disabled=true;
if(selectok==true)
{
document.all.item1.disabled=false; //显示标记 按钮
document.all.item3.disabled=false; //显示拷贝 按钮
}
if(popsrcelement.classname=="wen")
{
document.all.item2.disabled=false; //显示取消标记 按钮
document.all.item3.disabled=false; //显示拷贝 按钮
}
if(popid!=0)
document.all.item2.disabled=false; //显示取消标记 按钮
}
function hidemenu() //隐藏弹出菜单
{
popmenu.style.display="none";
}
function setcolor(n) //改变菜单条颜色
{
document.all("item"+n).style.color="white";
document.all("item"+n).style.background="#316ac5";
}
function clearcolor(n)
{
document.all("item"+n).style.color="black";
document.all("item"+n).style.background="white";
}
function masktext()
{
hidemenu();
var mask=showmodaldialog("mask.html",null,"status:no;center:yes;help:no;minimize:no;maximize:no;dialogwidth:400px;scroll:no;dialogheight:250px");
if(mask!=""){
var del=mask.charat(1); //获得是 删除 还是 修改
mask=mask.substring(3,mask.length); //替换掉参数 ,剩下的就是 文本了
nowid++;
temprange = false;
if(del=="1")
{
createdelline(nowid);
otemprange.execcommand("backcolor",true,"#efefef");
otemprange=null;
selectok=false;
}
else
{
createrect(nowid);
otemprange.execcommand("backcolor",true,"#efefef");
otemprange=null;
selectok=false;
mask=re(mask);
var newmemo=document.createelement("<input id=more"+nowid+" type=hidden>") //标记的内容
newmemo.value=rere(mask);
memo.insertbefore(newmemo);
var newdiv=document.createelement("<div id=memo"+nowid+" oncontextmenu=popid="+nowid+";popup() class=wen style=position:absolute;left:"+rangeposleft+";top:"+rangepostop+";width:150px;z-index:9></div>");
newdiv.innerhtml="<img alt=展开 id=expand"+nowid+" src=expand.gif style=cursor:hand onclick=expandmemo("+nowid+",1)>"+document.all("more"+nowid).value.substring(0,10);
memo.insertbefore(newdiv);
}
}
else
return
}
var popid=0;
function expandmemo(n,b)
{
if(b==1)
document.all("memo"+n).innerhtml="<img alt=收缩 id=expand"+n+" src=collapse.gif style=cursor:hand onclick=expandmemo("+n+",0)>"+document.all("more"+n).value;
else
document.all("memo"+n).innerhtml="<img alt=展开 id=expand"+n+" src=expand.gif style=cursor:hand onclick=expandmemo("+n+",1)>"+document.all("more"+n).value.substring(0,10);
}
function copyto()
{
hidemenu();
if(selectok==true) //拷贝选择的文字
{
otemprange.execcommand("copy");
alert("已经将\n\n"+otemprange.text+"\n\n复制了!");
return
}
if(popsrcelement.classname=="wen") //拷贝 标记的文字
{
var textr=document.body.createtextrange();
textr.movetoelementtext(popsrcelement);
textr.execcommand("copy");
alert("已经将\n\n"+textr.text+"\n\n复制了!");
}
if(popsrcelement.classname=="edittext") //拷贝 标记的文字
{
var textr=document.body.createtextrange();
textr.movetoelementtext(popsrcelement);
textr.execcommand("copy");
alert("已经将\n\n"+textr.text+"\n\n复制了!");
}
}
function save()
{
if (dialog("确定要保存所做的修改吗?\n你也可以在下次继续修改本公文。","保存修改",36+256)=="6"){
saveform.textcontentmemo.value=document.all("memo").innerhtml;
saveform.textcontent.value=document.all("edit").innerhtml;
saveform.totalmarked.value=nowid;
}
}
function unmask()
{
hidemenu();
if (dialog("确实要取消对这个标记吗?","取消标记",36+256)=="6")
{
document.all("mark"+popid).outerhtml="";
if(document.all("memo"+popid))
document.all("memo"+popid).outerhtml="";
}
popid=0;
}
function showhelp() //显示帮助信息
{
var msg="\n"
+"\n 第一步:选择一段文字"
+"\n 第二步:在选择的文字上面点右键"
+"\n 第三步:选择“标记选中”的,然后输入标记的内容\n\n"
+"\n ■注意事项:■■■■■■■\n"
+"\n 1.要取消标记,在标记上点右键,选择“取消标记”\n"
+"\n 2.要复制选中的文本,请选择“复制选中的”\n"
+"\n 美洲豹"
+"\n\n 2002年4月18日";
dialog(msg,"在线帮助",64);
}
function dragstart()
{
if ("img"==event.srcelement.tagname)
event.returnvalue=false;
}
//有关移动的过程和函数
var dragapproved=false
var eventsource,x,y
var popeventsource=""
function move()
{
if(event.button==1 && dragapproved)
{
hidemenu();
var newleft=temp1+event.clientx-x
var newtop=temp2+event.clienty-y
eventsource.style.pixelleft=newleft
eventsource.style.pixeltop=newtop
return false
}
}
function drags()
{
if((!document.all)&&(event.srcelement.tagname=="input"))
return
if (event.srcelement.classname=="wen")
{
dragapproved=true
eventsource=event.srcelement
temp1=eventsource.style.pixelleft
temp2=eventsource.style.pixeltop
x=event.clientx
y=event.clienty
document.onmousemove=move
}
}
//document.ondragstart=dragstart;
document.onmouseup=createtemprange;
//document.onselectstart=selectstart;
document.onmousedown=drags;
self.onload=init;
</script>
<script language="vbscript">
function dialog(msg,title,head)
dialog=msgbox(msg,head,title)
end function
function re(t)
tt=t
tt= replace(tt,"","")
tt= trim(replace(tt,chr(10),"<br>",1))
tt= replace(tt," "," ",1)
re=tt
end function
function reit(str,d,s)
reit=replace(str,d,s)
end function
function rere(t)
t=replace(t,"<","<",1)
t=replace(t,">",">",1)
t=replace(t,"<br>","<br>",1)
rere=t
end function
</script>
<body>
<table align="center">
<tr>
<td align="center">
<table align="center">
<tr>
<td>公文头部</td>
</tr>
</table>
<div align="left" class="memo" style="position:absolute;top:0;left:0px;width:700;line-height:23px" id="edit" oncontextmenu="popid=0;popup()">
<h3>vml 和 textrange 对象的结合,可以在知道文字位置的情况下给文字画筐,画圈…</h3>
<ul>
<li>第一步:选择一段文字
<li>在选择的文字上面点右键
<li>第三步:选择“标记选中”的,然后输入标记的内容
</ul>
<b>注意:使用的时候,因为标记都是绝对定位,所以文章也必须使用绝对定位!!</b>
各工程公司、项目部: <br>
<br>
根据在建工程施工进度的进展情况与业主对工期的要求,经过对工程量的认真盘点,结合集团公司今年的总体施工部署,现下达2002年二季度施工计划,请认真予以执行。今年赣龙线十九标段要完成产值2亿元,宁启线二标段和w10、w11标段的主体工程均要完成,施工任务艰巨,请你们要结合施工现场的实际情况,优化施工资源的配置,抓紧前期征迁工作的办理,见缝插针,把制约工期的桥涵基础、软基施工争取在本季度内超计划完成,为铺开工作面,在施工的黄金季节到来时加快施工进度创造条件。<br>
<br>
<font style="font-size:12pt">2002年一季度施工计划安排9043万元</font>,由于宁启线启动难,施工受征迁影响太大,赣龙线计划实际上是为适应年度投资计划而安排,又加春节放假和雨季提前的影响,集团公司一季度实际完成建安产值为6495.1万元,完成计划的71.8%。<br>
<br>
2002年二季度施工计划安排17270万元,其中,基建项目安排14441万元,外委工程安排1519万元,更新改造工程安排1256万元,自身建设及其他小型工程安排54.4万元。各公司2002年二季度施工计划安排如下:一公司3010万元,二公司4570万元,三公司5940万元,四公司1388万元,五公司168万元电务公司1400万元,厦门公司794万元。<br>
<ul>
<li>图形可以任意放</li>
<li>图形可以任意放</li>
<li>图形可以任意放</li>
<li>图形可以任意放</li>
</ul>
<p style="text-indent:20px;"> sadfasfa
<br>sdf</p>
<table border="1">
<tr>
<td>fddfg</td>
<td>fgdsfg</td>
</tr>
<tr>
<td>sdfgsdfg</td>
<td>sgdfgsfgf</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<div id="memo"></div>
<div class="bbb" id="popmenu" style="background-color:white;height: 135px; left: 0px; position: absolute; top: 0px; display:none; width: 120px; z-index: 9">
<button class="item" name="item1" onmouseover="setcolor(1)" onmouseout="clearcolor(1)" onclick="masktext();"> 标记选中的</button><br>
<button class="item" name="item2" onmouseover="setcolor(2)" onmouseout="clearcolor(2)" onclick="unmask();"> 取消标记 </button><br>
<hr align=center size=2 width="95%">
<button class="item" name="item3" onmouseover="setcolor(3)" onmouseout="clearcolor(3)" onclick="copyto();" > 复制 </button><br>
<button class="item" name="item4" onmouseover="setcolor(4)" onmouseout="clearcolor(4)" onclick="save();"> 保存修改 </button><br>
<button class="item" name="item5" onmouseover="setcolor(5)" onmouseout="clearcolor(5)" onclick="hidemenu();showhelp();"> 在线帮助 </button>
</div>
<form name="saveform">
<input type="hidden" name="n" value="0"> <!– 总共有多少留痕操作 –>
<input type="hidden" name="con"> <!– 文本内容(包含修改过的内容) –>
<input type="hidden" name="memory"> <!– 留痕的内容 由多个<div>组成 –>
</form>
</body>
</html>
