Newsgroup: it.comp.lang.javascript
Titolo: trascinare un'immagine

Ciao a tutti,
ho utilizzato lo script incluso nella seguente pagina html per
effettuare il drag and drop di un'immagine, esso funziona sia su IE6
che Firefox. Io vorrei eliminare le parti ridondanti cioč quelle
relative all'opzione document.all e all'else relativo a if
(document.getElementById){, se provo a eliminare queste parti il tutto
non funziona.
Mi dareste una mano e magari mi potreste suggerire dei link utili a
questo scopo.
Ciao 
Andrea
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
<script language="javascript">
<!--
var x=null
var y=null
var objectRef=null;
var demoObj
function init(){
 if (document.getElementById){
     if(document.all){
   			document.onmousedown=down,
document.onmouseup=up,document.onmousemove=move;
	  }else{
		   demoObj=addEventListener("mousedown",down,false)
		   demoObj=addEventListener("mousemove",move,false)
		   demoObj=addEventListener("mouseup",up,true)
		   return true
	  }
 }else{
	  window.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE |
Event.MOUSEUP);
	  window.onmousedown=down, window.onmouseup=up,
window.onmousemove=move;
 }
}
function down(e) {
  if(document.getElementById){
	   if (document.all){
			 objectRef=window.event.srcElement.parentElement,x=window.event.offsetX,
y=window.event.offsetY;
	   }else{
        	objectRef=document.getElementById("o"+
e.target.name
).style,x=e.layerX,
y=e.layerY;
    	}
  }else{
	   if (document.layers['o'+
e.target.name
]) {
		 objectRef=document.layers['o'+
e.target.name
], x=e.layerX,
y=e.layerY;
		}
   } return true
}
function move(e) {
  if (document.getElementById && objectRef){
	   if(document.all){
			   objectRef.style.posLeft=window.event.clientX-x,objectRef.style.posTop=window.event.clientY-y;
	   }else{    
			objectRef.left=e.pageX-x, objectRef.top=e.pageY-y;
		}
  }else if (document.layers && objectRef){      
  		objectRef.left=e.pageX-x, objectRef.top=e.pageY-y;
  } return false
}
function up(e) {
	objectRef=null;
}
//--></script>
</head>
<body onload="init()">
<span id="o0" style="position:absolute; left:0px; top:0px;
width:50px;">
 hello
 <img src="images/image.jpg" name="0" width="50" height="50" alt="An
image in a
span" border=1>
</span>
<div id="o1" style="position:absolute; left:100px; top:100px;
width:75px;">
 <img src="images/image.jpg" name="1" width="75" height="75" alt="An
image in a
div">
</div>
<div id="o2" style="position:absolute; left:300px; top:300px;
width:175px;">
<img src="images/image.jpg" width="100px" height="100px" alt="An image
that doesn't
move">
</div>
</body>
</html>

 non funziona.
Cioé vuoi eliminare la compatibilità IE? (non ho letto tutto lo script, ma
nelle prime righe già compare addEventListener che non credo sia supportato
da IE)
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
B.M.

probabilmente la mia inesperienza con js mi fa fare degli errori
banali....
pensavo che per la compatibilità con IE bastasse rispettare
 if (document.getElementById){
però da quello che hai scritto che sembra che dentro quell'if per la
compatibilità con IE sia neccessaria anche l'opzione
if(document.all){ 
sbaglio???

 sbaglio???
No, non sbagli per quel che riguarda il codice specifico che hai postato,
anche se io eviterei. Andrebbe però un po' riscritto.
Per esempio, per addEventListener (che, come ti dicevo, mi sa che non è
supportato da IE), potresti verificare 
 if(addEventListener) {....} else {....}
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.