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>