Code highlighting prodUCed by Act
ipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--><script language=
javascript src="prototype1.3.1.js"></script>
<script language=
Javascript src="yahoo.js"></script>
<script language=javascript src="event.js"></script>
<body>
<div id="dragDiv">
<img src="http://www.
QQread.com/java/img.jpg" style="width:280px;height:200px"></img>
</div>
<SCRIPT LANGUAGE="JavaScript">
<!--
if(window.attachEvent){
}else{
alert("为了测试,请用ie");
}
function DragListener(){
this.down=function(){
return false;
},
this.move=function(){
var x=Event.pointerX(event);
var y=Event.pointerY(event);
window.status="x="+x+";y="+y;//仅在ie下可以运行,为了测试
return false;
}
}
var obj=new DragListener();
//因为我想在方法中用obj对象的内容,所以我用prototype.js的bind方法改变方法的 ”调用对象“
//当我下压鼠标拖动时,会出现异常
/*
$("dragDiv").onmousedown =obj.down.bind(obj);
$("dragDiv").onmousemove = obj.move.bind(obj);
*/
/*
$("dragDiv").onmousedown =obj.down;//正确 但我们在方法中用this访问到的对象是 dom
$("dragDiv").onmousemove = obj.move;//正确
*/
/*
$("dragDiv").onmousedown =associateObjWithEvent(obj,'down');//正确
$("dragDiv").onmousemove = associateObjWithEvent(obj,'move');//正确
*/
Event.observe("dragDiv","mousedown",obj.down.bindAsEventListener(obj),true);
/*
Function.prototype.bind = function(object) {
var __method = this;
return function() {
__method.apply(object, arguments);
}
}
*/
var fun=obj.move.bind(obj); //错误,bind函数有问题呀
fun=function(){return obj.move.apply(obj)}; //正确
Event.observe("dragDiv","mousemove",fun,true);
//YAHOO.util.Event.addListener("dragDiv", "mousedown", obj.down, obj, true);//正确
//YAHOO.util.Event.addListener("dragDiv", "mousemove", obj.move, obj, true);//正确
function associateObjWithEvent(obj, methodName){
return (function(e){
e = ewindow.event;
return obj[methodName](e);
});
}
//-->
</SCRIPT>
</body>