看看这段代码!!!
我写了一个可以在网页上输入分数的htc程序。在点击按钮时会在光标所在出插入另外一个分数。但为什么插入的位置老是不对???麻烦看看.
win.htc
<html xmlns:plow xmlns:v="urn:schemas-microsoft-com:vml">
<style type="text/css">
plow\:win {behavior:url(win.htc);}
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<PUBLIC:COMPONENT NAME="win">
<METHOD NAME="adpp" />
<PUBLIC:PROPERTY NAME="height" />
<PUBLIC:PROPERTY NAME="mycolor" />
<PUBLIC:PROPERTY NAME="width" />
<ATTACH EVENT="ondocumentready" HANDLER="DoInit" />
<ATTACH EVENT="onresize" HANDLER="ReSize" />
<ATTACH EVENT="onclick" HANDLER="DoClick" />
<SCRIPT LANGUAGE="JScript">
style.position="absolute";
style.height=height;
style.width=width;
style.posTop=top;
style.posLeft=left;
style.fontSize=fontsize;
var X=0,Y=0;
var ofx=0,ofy=0;
function ReSize()
{
var child=element.document.getElementsByTagName("div");
fsx=element.document.getElementsByTagName("line")[0];
wid=0;
for(i=0;i<child.length;i++)
{
rcts = child[i].getBoundingClientRect();
if(parseInt(rcts.right-rcts.left) > wid)
{
wid=parseInt(rcts.right-rcts.left);
}
}
wid+=4;
style.width=wid;
child[0].style.width=wid-4;
child[1].style.width=wid-4;
rcts = child[0].getBoundingClientRect();
child[1].style.top=parseInt(rcts.bottom-rcts.top+6);
fsx.from='"'+0+','+parseInt(rcts.bottom-rcts.top+4)+'"';
fsx.to='"'+wid+','+parseInt(rcts.bottom-rcts.top+4)+'"';
}
function createline(y,ex)
{
myline=document.createElement("v:line");
myline.from='" 0'+","+y+'"';
myline.to='"'+ex+','+y+'"';
appendChild(myline);
}
function creatediv(tp,lf)
{
cb=document.createElement("div");
cb.style.background=mycolor;
cb.style.position="absolute";
cb.style.height=height/2-4;
cb.style.width=width-4;
cb.style.posTop=tp;
cb.style.posLeft=lf;
cb.style.fontSize=fontsize;
cb.style.textAlign="center";
cb.contentEditable="true";
cb.onresize=ReSize;
appendChild(cb);
}
function DoInit()
{
creatediv(2,2);
createline(height/2,width);
creatediv(2+height/2,2);
}
function DoClick()
{
X=event.clientX;
Y=event.clientY;
ofx=event.offsetX;
ofy=event.offsetY;
}
function adpp()
{
if(hasChildNodes())
{
var tr = element.document.body.createTextRange();
tr.moveToPoint(X,Y);
str="<plow:win mycolor= 'red' width=20 height=20 fontsize=9pt";
str +=" top="+ofy+" left="+ofx +" /> ";
tr.pasteHTML(str);
}
}
</SCRIPT>
</PUBLIC:COMPONENT>
</html>
index.htm
<html xmlns:plow xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<script language="javascript">
function aptest()
{
elam=document.getElementsByTagName("win");
elam[0].adpp();
}
</script>
<style type="text/css">
plow\:win {behavior:url(win.htc);}
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
</head>
<body >
<input type="button" unselectable="on" onclick="aptest()">
<plow:win mycolor="red" width=50 height=50 fontsize=9pt left=300 top=100 >
</plow:win>
</body>
</html>