webForumDet fria alternativet

Hämtar koordinater för en pixel i en bild.

JavaScript

6 svar · 249 visningar · startad av Rocket

Medlem sedan feb. 2000372 inlägg
Frågan#1

Kan man med hjälp av javascript få ut koordinaterna för en pixel i en bild. T.ex att man klickar med musen på en bild och så kommer x och y koordinaten i en textbox eller kanske så att det hela tiden visas koordinaterna när man drar över bilden. Bäst skulle det ju vara om det gick att få så att koordinaterna kommer fram när man klickar.

Medlem sedan juni 20004 308 inlägg
#2

Om du slänger bilden i ett lager så du vet var du har den är det inga problem.

<div id="foo" style="position:absolute;left:100px;top:100px;"><a href="#" onClick="alert((Xmouse-100)+','+(Ymouse-100));return false;"><img src="bild.gif" id="bild" border="0"></a></div>
<script language="JavaScript">
if (document.layers) document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = MoveHandler;
function MoveHandler(evnt) {
	if(document.layers){
		Xmouse = evnt.pageX; Ymouse = evnt.pageY;
	} else if(document.all) {
		Xmouse = window.event.x; Ymouse = window.event.y;
	}
}
</script>

------------------
/ J

Medlem sedan feb. 2000372 inlägg
#3

Ett problem.

Om bilden är så stor att den inte får plats i fönstret så att man måste börja scrolla så blir det ju fel. Då kan ju två olika koordinater få samma värde.

Jag vet att jag snackade om mindre bilder förut men om man nu har en stor bild som inte ryms i fönstret. Går det att fixa?

Medlem sedan juni 20004 308 inlägg
#4

Visst.

<div id="foo" style="position:absolute;left:100px;top:100px;"><a href="#" onClick="visakoordinat(); return false;"><img src="bild.gif" id="bild" border="0"></a></div>
<script language="JavaScript">
layerOffsetX=100;
layerOffsetY=100;
if (document.layers) document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = MoveHandler;
function MoveHandler(evnt) {
	if(document.layers){
		Xmouse = evnt.pageX; Ymouse = evnt.pageY;
	} else if(document.all) {
		Xmouse = window.event.x; Ymouse = window.event.y;
	}
}
function visakoordinat(){
	var scrollX=(document.layers)?pageXOffset:document.body.scrollLeft;
	var scrollY=(document.layers)?pageYOffset:document.body.scrollTop;
	alert((Xmouse-layerOffsetX+scrollX)+','+(Ymouse-layerOffsetX+scrollY));
}
</script>

------------------
/ J

Medlem sedan feb. 2000372 inlägg
#5

och om man vill att koordinaterna ska komma i två textboxs när man klickar?

Medlem sedan juni 20004 308 inlägg
#6
<form name="myform"><input type="text" name="x"><input type="text" name="y"></form>
<div id="foo" style="position:absolute;left:100px;top:100px;"><a href="#" onClick="visakoordinat(); return false;"><img src="bild.gif" id="bild" border="0"></a></div>
<script language="JavaScript">
layerOffsetX=100;
layerOffsetY=100;
if (document.layers) document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = MoveHandler;
function MoveHandler(evnt) {
if(document.layers){
Xmouse = evnt.pageX; Ymouse = evnt.pageY;
} else if(document.all) {
Xmouse = window.event.x; Ymouse = window.event.y;
}
}
function visakoordinat(){
var scrollX=(document.layers)?pageXOffset:document.body.scrollLeft;
var scrollY=(document.layers)?pageYOffset:document.body.scrollTop;
document.myform.x.value=(Xmouse-layerOffsetX+scrollX);
document.myform.y.value=(Ymouse-layerOffsetX+scrollY);
}
</script>

------------------
/ J

Medlem sedan feb. 2000372 inlägg
#7

Utmärkt...

251 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)