onMouseDown
X1 = event.clientX;
Y1 = event.clientY;onMouseUp
X2 = event.clientX;
Y2 = event.clientY;
document.forms("formname").submit()
X1 = event.clientX;
Y1 = event.clientY;onMouseUp
X2 = event.clientX;
Y2 = event.clientY;
document.forms("formname").submit()
不对吧...
比如这个页面只有一行:
<img src="hehe.jpg">
加上您的代码后,form的接收页面里面怎么写才能接受X1,X2,Y1,Y2的值呢?
还有...这个是取出相对图片的相对坐标么...?
把这些值放在<input type=hidden name="ex1">...再提交
<%@ Language=VBScript %>
<HTML>
<HEAD>
<meta name="GENERATOR" Content="Microsoft Visual Studio.NET 7.0">
<script language="javascript">
var X1,Y1,X2,Y2,X,Y
function Down(){
X1 = event.clientX;
Y1 = event.clientY;
}
function Up(){
X2 = event.clientX;
Y2 = event.clientY;
document.all("X").value = X2-X1;
document.all("Y").value = Y2-Y1;
X = X2 - X1;
Y = Y2 - Y1;
document.write(X + "/" + Y);
//document.A1.submit();
}
</script>
</HEAD>
<body>
<form action="" id="A1">
<div id=I1 onMouseDown="Down()" onMouseUp="Up();">
<IMG alt="" src="showfileA.jpg" >
</div>
<input type="hidden" id="X"><input type="hidden" id="Y">
</form>
</body>
</HTML>
我来不及看JavaScript了,以后一定好好看
这个东西时间比较紧...
最好是把form提交目的页面代码也给出来...
=((
您说的图片是个问题,什么意思呢?
<body>
<img id=img1 src="csdn.gif" width=150 height=150 onmousedown="dw()" onmousemove="go()" onmouseup="up()">
<div style="position:absolute;visibility:hidden;width:0;height:0;border:1 solid red;z-index:100" id=tem>
</div>
<form action='1.asp' method=post name=frm>
<input name=x1><input name=y1>
<input name=x2><input name=y2>
</form>
<script>
var a=false
function dw(){
event.srcElement.setCapture();
tem.style.left=event.clientX+document.body.scrollLeft;
tem.style.top=event.clientY+document.body.scrollTop;
frm.x1.value=event.offsetX
frm.y1.value=event.offsetY
tem.style.visibility=''
a=true
}
function go(){
if(a){
tem.style.pixelWidth=event.offsetX-parseInt(frm.x1.value)
tem.style.pixelHeight=event.offsetY-parseInt(frm.y1.value)
}
}function up(){
event.srcElement.releaseCapture();
a=false
frm.x2.value=event.offsetX
frm.y2.value=event.offsetY
document.frm.submit()
}
</script>
</body>
发觉自己快成骗浏览器的骗子了... :P<%@ Language=VBScript %>
<HTML>
<HEAD>
<meta name="GENERATOR" Content="Microsoft Visual Studio.NET 7.0">
<script language="javascript">
var X1,Y1,X2,Y2,X,Y
function Down(){
X1 = event.clientX;
Y1 = event.clientY;
}
function Up(){
X2 = event.clientX;
Y2 = event.clientY;
document.all("X").value = X2-X1;
document.all("Y").value = Y2-Y1;
X = X2 - X1;
Y = Y2 - Y1;
//document.write(X + "/" + Y);
document.A1.submit();
}
</script>
</HEAD>
<body>
<form action="" id="A1">
<div id=I1 onMouseDown="Down()" onMouseUp="Up();" style="position: absolute; height:300;width :400; z-index: 1">
<table width=100% height=100%><tr><td background="showfileA.jpg"> </td></tr></table>
</div>
<input type="hidden" id="X"><input type="hidden" id="Y">
</form>
</body>
</HTML>
你可以看看.
不过你确实是高手.
多谢了!
搞定了^_^
这就结贴,嗯
fason(阿信)就看懂我的意思了,嗯,还照我的要求给出了完整的代码,太棒了!
YEAH!
有个小小的问题....
就是鼠标拖放速度太快的时候,红色矩形框会突然跟不上鼠标...
怎么回事呀?稍等就结贴哈
倒是应该让<img ondragstart ="return false"/>
A:
在Down时attachEvent(omousemove,go())
在fnUP时deathEvent(omousemove,go())
可以防止没事在图片上移动时也执行go();
B:
或者是down时启动计时器执行go(),在up时终止计时器;
+:
1,在脚本中加上保护if(A1&&A1.X1...)
2,将<div id="tem" .../>换成<img id="tem" style="position:absolute;" src="透明图片" border="1">
<SCRIPT>
function down(){
doEvent..
attachEvent(omousemove,go())
}
function up(){
doEvent..
deathEvent(omousemove,go())
}
function go(){ doEvent..
}
</SCRIPT>
虽说fason(阿信)的代码已经差不多了
不过我还想更完善一下
我把"attachEvent(omousemove,go())"和"deathEvent(omousemove,go())"分别加到dw和up函数的末尾执行,这样就要提示Script错误
怎么弄呢?
还有:将<div id="tem" .../>换成<img id="tem" style="position:absolute;" src="透明图片" border="1">,为什么要这样换呢?
<img id=img1 src="csdn.gif" width=150 height=150 onmousedown="dw()" onmouseup="up()" ondragstart="return false">
<div style="position:absolute;left:-1;top:-1;width:1;height:1;border:1 solid red;z-index:100" id=tem>
</div>
<form action='1.asp' method=post name=frm>
<input name=x1><input name=y1>
<input name=x2><input name=y2>
</form>
<script>
//var i=0;
var posX1=0,posX2=0,posY1=0,posY2=0;
var temX,temY;
function dw(){
posX1=event.offsetX;
posY1=event.offsetY;
temX=event.clientX+document.body.scrollLeft;
temY=event.clientY+document.body.scrollTop;
window.document.attachEvent( "onmousemove",go);}
function go(){
tem.style.left=Math.min(temX,event.clientX);
tem.style.top=Math.min(temY,event.clientY);
tem.style.pixelWidth=Math.abs(temX-event.clientX)
tem.style.pixelHeight=Math.abs(temY-event.clientY)
// status+=i;//状态栏看鼠标移动的函数执行频率
}function up(){
posX2=event.offsetX;
posY2=event.offsetY;
frm.x1.value=Math.min(posX1,posX2);
frm.y1.value=Math.min(posY1,posY2);
frm.x2.value=Math.max(posX1,posX2);
frm.y2.value=Math.max(posY1,posY2);
window.document.detachEvent( "onmousemove" ,go);
// document.frm.submit();
}
</script>
</body>
[js]
var step=1;//微调大小
function document.onkeyup(){
if(event.keyCode==l) {//LEFT
frm.x1.value-=step;
tem.style.pixelLeft-=step;
}else if(event.keyCode==r){//RIGHT
frm.x1.value+=step;
tem.style.pixelLeft+=step;
}else if(event.keyCode==u){//UP
y1....
tem.style.pixelTop...
}else if(event.keyCode==d){//DOWN
....
}if(event.keyCode==l && event.ctrlKey){//CTRL+LEFT
if(frm.x2.value>=(frm.x1.value+step)){
tem.style.pixelLeft-=step;
frm.x2.value-=step
}
} else if()...
}
[/js]
但是还存在一个问题,除了判断鼠标是否在图片内部以外
如果图片很大超过了一个屏幕,那么一旦滚屏那拖放窗口定位就要出错
好像是这句有问题
tem.style.left=Math.min(temX,event.clientX);
tem.style.top=Math.min(temY,event.clientY);
应该怎么改?
setCapture() 和 releaseCapture()是什么作用?
谢谢
[html]
<img1/>
[script]img1.setCapture()]
则屏幕事件由img1获得,直到img1.releaseCapture()。你可以在页面中这样<input type=button value="wokao!" onclick="this.setCapture()"/>
<input type=button value="wokaokaokao!"/>有鼠标点了按钮在点点其他冬冬看看
然后用alt + tab || alt + f4
<form action='1.asp' method=post name=frm>
<input name=x1><input name=y1><input name=x2><input name=y2>
</form>
<div style="position:absolute;left:-1;top:-1;border:1 solid red;z-index:100" id=tem></div>
<img id=img1 src="csdn.gif" width=1500 height=1500/>
<script>
<!--
function rect(){//构造矩形object方法
this.X1=0;
this.X2=0;
this.Y1=0;
this.Y2=0;
return this;
}
var pos=new rect(),box=new rect();//矩形实例:pos对img1,box为tem所用function dw(){
//获得两个矩形的开始坐标
pos.X1=event.offsetX;
pos.Y1=event.offsetY;
box.X1=event.clientX+document.body.scrollLeft;
box.Y1=event.clientY+document.body.scrollTop;
//追加mousemove event
window.document.attachEvent( "onmousemove",go);}
function go(){//注意这里event.srcElement不一定是图片。所以在document中attach & detach
//获得box的目前坐标
box.X2=event.clientX+document.body.scrollLeft;
box.Y2=event.clientY+document.body.scrollTop;
//计算tem的位置和大小 Main.min取小,Math.abs去绝对值
tem.style.left=Math.min(box.X1,box.X2);
tem.style.top=Math.min(box.Y1,box.Y2);
tem.style.pixelWidth=Math.abs(box.X1-box.X2)
tem.style.pixelHeight=Math.abs(box.Y1-box.Y2)// status=event.srcElement.id//检测事件id
}function up(){
//获得pos的结束坐标
pos.X2=event.offsetX;
pos.Y2=event.offsetY;
//运算矩形
frm.x1.value=Math.min(pos.X1,pos.X2);
frm.y1.value=Math.min(pos.Y1,pos.Y2);
frm.x2.value=Math.max(pos.X1,pos.X2);
frm.y2.value=Math.max(pos.Y1,pos.Y2);
//杀掉鼠标移动事件
window.document.detachEvent( "onmousemove" ,go);
// document.frm.submit();//提交表单
}
var oImg=null;
if(img1){//如果document.imgages(img1)存在
oImg=document.images(img1);
with(img1){//初始化img1的3个事件
onmousedown=dw;
onmouseup=up;
ondragstart=function(){return false}
}
}
//end-->
</script>
</body>
另外,不如把
// document.frm.submit();//提交表单
换成(以下伪码)
window.location=escape(your for.action.toString()+"?x1="+pos.x1+"&y1="+pos.x2+"....");++:
escape
>> used to create strings to add to a URL...
>> return (ISO Latin-1 character set)encoding另外,感谢你给我了一个提示。
我可以把XX局的xxx局长的#@$@$@#$“设计思想:网页可圈可点还可保存取出”打发了。
写{
SQL 想哭,怎么不把各种数据库的SQL语句统一了?
--(笑)不行,我们统一了,便宜了你们了!
JAVA 想笑,作为客户程序员总是比类创建者轻松,不用考虑得很细腻,基本正确即可;
--(怒)您知道我们有多辛苦么,NND?
DHTML 想怒,客户的想象力还真丰富,并且洞察秋毫~~"
--(骂)这种小程序应该很简单吧,你说很难?扯[option(胆,j8蛋,)]。
XHTML 想骂,美工大姐,您能不能给属性加上引号,能不能给不闭合的标记后面加个/?
--(哭)我是美院毕业的,不是计(音“妓”)院毕业的,我[option(实在,确实,就是,一定)]学不会......
}
还有...楼上最后说的几条,同感同感!
JavaSript很少用所以水平很次,碰到老大的需求往往就满足不了乐最后...告诉你们我做这个东西干什么的吧
是学校的校报,老大说要做个电子版,要做成体坛周报的形式(他肯定喜欢看体坛周报的网站的)-: )
这样我必须设计个程序来让他们找人做图片的MAP,这就是我要取出矩形框坐标的用处
呵呵