Avatar billede mstorgaard Praktikant
30. juli 2006 - 23:14 Der er 14 kommentarer og
1 løsning

Fange outputtet af en kode som almindelig tekst

Jeg fandt en kode, som viser, hvor musen er placeret på skærmen. Jeg vil nu gerne have lavet det sådan, så jeg kan hive x- og y-værdien ud af koden, som almindelig tekst i stedet for i <input>-felter.

Formen:
<form name="Show">
<input type="text" name="MouseX" value="0" size="4"> X<br>
<input type="text" name="MouseY" value="0" size="4"> Y<br>
</form>

JavaScriptet:
var IE = document.all?true:false
if (!IE) document.captureEvents(Event.MOUSEMOVE)
document.onmousemove = getMouseXY;
var tempX = 0
var tempY = 0

function getMouseXY(e)
{
  if (IE)
  {
    tempX = event.clientX + document.body.scrollLeft
    tempY = event.clientY + document.body.scrollTop
  }
  else
  {
    tempX = e.pageX
    tempY = e.pageY
  }
  if (tempX < 0)
  {
    tempX = 0
  }
  if (tempY < 0)
  {
    tempY = 0
  }
  document.Show.MouseX.value = tempX
  document.Show.MouseY.value = tempY
  return true
}
Avatar billede mclemens Nybegynder
30. juli 2006 - 23:30 #1
Havde noget liggende...
- den du har der virker ikke hvis siden er højere end vinduet... eks:


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
var IE = document.all?true:false
if (!IE) document.captureEvents(Event.MOUSEMOVE)
document.onmousemove = getMouseXY;
var tempX = 0
var tempY = 0

function getMouseXY(e)
{
  if (IE)
  {
    tempX = event.clientX + document.body.scrollLeft
    tempY = event.clientY + document.body.scrollTop
  }
  else
  {
    tempX = e.pageX
    tempY = e.pageY
  }
  if (tempX < 0)
  {
    tempX = 0
  }
  if (tempY < 0)
  {
    tempY = 0
  }
  document.Show.MouseX.value = tempX
  document.Show.MouseY.value = tempY
  return true
}

</script>

</head><body><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<form name="Show">
<input type="text" name="MouseX" value="0" size="4"> X<br>
<input type="text" name="MouseY" value="0" size="4"> Y<br>
</form>

JavaScriptet:

</body></html>




vs.:


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
<!--

var dmcy=0;var dmcx=0;

var IE=((document.all) && (navigator.userAgent.indexOf('Opera')== -1))?true:false;
if(!IE)document.captureEvents(Event.mousemove)

document.onmousemove=function (e){
if(IE){
  dmcst=(tmenu=document.documentElement.scrollTop)?tmenu:document.body.scrollTop;
  dmcsl=(lmenu=document.documentElement.scrollLeft)?lmenu:document.body.scrollLeft;
  dmcy=event.clientY+dmcst;dmcx=event.clientX+dmcsl;
}else{dmcy=e.pageY;dmcx=e.pageX;}

document.getElementById("x").innerHTML=dmcx;
document.getElementById("y").innerHTML=dmcy;
}

//-->
</script>


</head>


<body><b onclick="alert('x: '+dmcx+'\ny: '+dmcy);">Test</b>
<br><br><br><br><br><br><br><br>
<div id="x"></div>
<div id="y"></div>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</body></html>
Avatar billede mclemens Nybegynder
30. juli 2006 - 23:34 #2
[ Jeg vil nu gerne have lavet det sådan, så jeg kan hive x- og y-værdien ud af koden, som almindelig tekst i stedet for i <input>-felter. ] Du kan evt. bruge innerHTML eller tildele værdien til et span element som her f.eks.:



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
<!--

var dmcy=0;var dmcx=0;

var IE=((document.all) && (navigator.userAgent.indexOf('Opera')== -1))?true:false;
if(!IE)document.captureEvents(Event.mousemove)

document.onmousemove=function (e){
if(IE){
  dmcst=(tmenu=document.documentElement.scrollTop)?tmenu:document.body.scrollTop;
  dmcsl=(lmenu=document.documentElement.scrollLeft)?lmenu:document.body.scrollLeft;
  dmcy=event.clientY+dmcst;dmcx=event.clientX+dmcsl;
}else{dmcy=e.pageY;dmcx=e.pageX;}

//document.getElementById("x").innerHTML=dmcx; // innerHTML tildeling midlertidig deaktiveret
//document.getElementById("y").innerHTML=dmcy;

document.getElementById("x").childNodes[0].nodeValue=dmcx;
document.getElementById("y").childNodes[0].nodeValue=dmcy;
}

//-->
</script>


</head>


<body><b onclick="alert('x: '+dmcx+'\ny: '+dmcy);">Test</b>
<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.
x:<span id="x">Javascript kræves</span>, y:<span id="y">Javascript kræves</span>

</body></html>
Avatar billede mclemens Nybegynder
30. juli 2006 - 23:35 #3
Og så var problemet i det andet script også at Opera melder ok på
var IE = document.all?true:false - derfor bruger jeg var IE=((document.all) && (navigator.userAgent.indexOf('Opera')== -1))?true:false;
Avatar billede mclemens Nybegynder
30. juli 2006 - 23:37 #4
dmcst=(tmenu=document.documentElement.scrollTop)?tmenu:document.body.scrollTop;
  dmcsl=(lmenu=document.documentElement.scrollLeft)?lmenu:document.body.scrollLeft;

^ - switchen mellem documentElement og document.body er for at den skal virke med/uden ie i quirks mode - det andet script virkede kun når ie er i quirks ... og en ie i quirks er måske ikke altid det sjoveste ...
Avatar billede mstorgaard Praktikant
30. juli 2006 - 23:52 #5
Det er meningen det er noget der skal bruges i en kode, som skal placere en div, der hvor musen er. Dvs. man skal kunne sætte x- og y-værdien ind i <<style="position: absolute; left: Xpx; top: Ypx;">>

Kan det gøres?
Avatar billede mclemens Nybegynder
30. juli 2006 - 23:52 #6
[ - den du har der virker ikke hvis siden er højere end vinduet... eks: ]
- tjoh virkede egentlig fint nok med ie i quirks... hvis du foretrækker quirks og så det script istedet for det andet lyder linjerne sådan her istedet (bemærk dog der mangler checket på opera stadig)

istedet for:
  document.Show.MouseX.value = tempX
  document.Show.MouseY.value = tempY

så:



//document.getElementById("x").innerHTML=tempX; // innerHTML tildeling midlertidig deaktiveret
//document.getElementById("y").innerHTML=tempY;

document.getElementById("x").childNodes[0].nodeValue=tempX;
document.getElementById("y").childNodes[0].nodeValue=tempY;


og x:<span id="x">Javascript kræves</span>, y:<span id="y">Javascript kræves</span>
Avatar billede mclemens Nybegynder
30. juli 2006 - 23:54 #7
kigger... hvilket script?
Avatar billede mclemens Nybegynder
30. juli 2006 - 23:54 #8
den i starten eller den jeg kastede?
Avatar billede mstorgaard Praktikant
30. juli 2006 - 23:55 #9
Den du kastede
Avatar billede mclemens Nybegynder
31. juli 2006 - 00:01 #10
noget i denne stil?



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><head><meta

http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<style type="text/css">

#micestalker{
position:absolute;top:0px;left:0px;display:none;}
}

</style>

<script type="text/javascript">
<!--

var dmcy=0;var dmcx=0;var micestalk;
var stalkleft=10; // px til højre for mus (tal)  px til venstre for mus (-tal)
var stalktop=10; // px til nedenunder mus (tal)  px over for mus (-tal)

var IE=((document.all) && (navigator.userAgent.indexOf('Opera')== -1))?true:false;
if(!IE)document.captureEvents(Event.mousemove)

document.onmousemove=function (e){
if(IE){
  dmcst=(tmenu=document.documentElement.scrollTop)?tmenu:document.body.scrollTop;
  dmcsl=(lmenu=document.documentElement.scrollLeft)?lmenu:document.body.scrollLeft;
  dmcy=event.clientY+dmcst;dmcx=event.clientX+dmcsl;
}else{dmcy=e.pageY;dmcx=e.pageX;}

//document.getElementById("x").innerHTML=dmcx; // innerHTML tildeling midlertidig deaktiveret
//document.getElementById("y").innerHTML=dmcy;

document.getElementById("x").childNodes[0].nodeValue=dmcx;
document.getElementById("y").childNodes[0].nodeValue=dmcy;
micestalk.style.top=dmcy+stalktop+"px";
micestalk.style.left=dmcx+stalkleft+"px";

}


window.onload=function(){
  micestalk=document.getElementById("micestalker");
  micestalk.style.display="block"; // viser div onload da folk kan have deaktiveret js
}
//-->
</script>


</head>


<body><b onclick="alert('x: '+dmcx+'\ny: '+dmcy);">Test</b>
<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.

<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.<br>.

<br>.<br>.<br>.<br>.<br>.


<div id="micestalker">x:<span id="x">Javascript kræves</span>, y:<span id="y">Javascript kræves</span></div></body></html>
Avatar billede mclemens Nybegynder
31. juli 2006 - 00:03 #11
teksten i de spans kan selvfølgelig rettes fra Javascript kræves
til &nbsp; istedet ... de vises jo ikke medmindre js er aktiveret da
css definerer den til display none fra starten af :o)
Avatar billede mclemens Nybegynder
31. juli 2006 - 00:05 #12
Uhm, tror jeg fangede hvad du mente nu ...
en kombi af det her med noget ala det her:
http://www.eksperten.dk/spm/702784
Avatar billede mclemens Nybegynder
31. juli 2006 - 00:06 #13
måske?
Avatar billede mstorgaard Praktikant
31. juli 2006 - 00:09 #14
Det fungerer i hvert fald nu (:

Jeg siger mange tak for hjælpen, og belønner med lidt point..
Avatar billede mclemens Nybegynder
31. juli 2006 - 00:10 #15
Velbekom, og tak for point :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester