Avatar billede kjeldsted Novice
13. juli 2011 - 13:16 Der er 9 kommentarer og
1 løsning

Flytte element i FF.

Hejsa folkens.

Jeg er begyndt at programmere et Drag'n'drop jeg skal benytte på et internt webprogram. Jeg vil helst gerne selv bygge skidtet fra bunden, og vil helst ikke begynde på jQuery. Ja, er sikkert lidt underlig, men lad nu det ligge :)

Til at begynde med ville jeg blot lave et element jeg kan flytte ved at holde musen nede og flytte dette. Og jeg har da sådan set også fået bikset noget sammen. Dog kan man ikke ligefrem det virker optimalt i FF (5.0 i OS X 10.6). Hver anden gang flytter den ikke boksen, men ja. Laver den gennemsigtigte Firefox drag ting.
Dog ser det ud til at virke fint i Safari.
Men kan jeg måske få den til at køre en smule bedre på en eller anden måde.

Det jeg er kommet frem til kan ses hér: http://jenskjeldsted.dk/test.htm

Kildekode
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css">
    #boks {
    background-color:#FF0000;
    height:200px;
    width:200px;   
    }
</style>
<script type="text/javascript">
var mouse_stat = false;
document.onmousedown = set_var;
document.onmouseup = reset_var;
function set_var()
{
    mouse_stat = true;   
}
function reset_var()
{
    mouse_stat = false;   
}
function load_func()
{
    document.onmousemove = track;
    document.getElementById("boks").onmousemove = move;
}
function track(e)
{
    var position = new Array();
    position["x"] = e.pageX;
    position["y"] = e.pageY;   
    document.getElementById("x").innerHTML = position["x"];
    document.getElementById("y").innerHTML = position["y"];
}

function move(e)
{
    var position = new Array();
    position["x"] = e.pageX;
    position["y"] = e.pageY;
    if(mouse_stat) document.getElementById("boks").style.marginLeft = position["x"]-100 + "px";
    if(mouse_stat) document.getElementById("boks").style.marginTop = position["y"]-100 + "px";
}
</script>
</head>
<body onLoad="load_func()">
<div id="x">x<br></div>
<div id="y">y</div>
<div id="boks"></div>
</body>
</html>


På forhånd tak for hjælp.
Avatar billede jakobdo Ekspert
15. juli 2011 - 07:29 #1
Måske du kunne finde lidt inspiration her: http://www.quirksmode.org/js/dragdrop.html
Avatar billede kjeldsted Novice
15. juli 2011 - 20:53 #2
Jeg får lige kigget på om jeg mon ville kunne finde en løsning dér.
Avatar billede jakobdo Ekspert
15. juli 2011 - 21:05 #3
Mangler du ikke også noget som trigges på mouseup?
Og hvorfor har du -100 ?
Kan du ikke "bare" lave, så man tager fat i elementet, der hvor der bliver klikket?
Avatar billede kjeldsted Novice
15. juli 2011 - 21:16 #4
Noget af det der står er egentlig bare fordi jeg har leget med det. Såsom de -100 :)
Og det var også meningen at den skulle tage fat der hvor elementet er. Men ville lige have styr på hvordan jeg får den til at virke i FF også. Som sagt virker den 100% som jeg ville have i Safari.

Men jeg har da

document.onmouseup = reset_var;

og

function reset_var()
{
    mouse_stat = false; 
}

Så den bliver trigget. Og som sagt virker det faktisk
Avatar billede jakobdo Ekspert
15. juli 2011 - 21:34 #5
Den havde jeg lige overset.
Og her er måske et eksempel, som er lidt mere ligetil:

http://luke.breuer.com/tutorial/javascript-drag-and-drop-tutorial.aspx
Avatar billede kjeldsted Novice
15. juli 2011 - 21:43 #6
Hm. Det ser ud til at FF ikke laver sin egen drag af elementet hvis jeg indsætter noget tekst i boksen (såsom &nbsp;)
Avatar billede kjeldsted Novice
22. juli 2011 - 11:36 #7
Hovsa. Kom da vist helt fra dette igen.

Men jeg fik da løst problemet ser det ud det.
Men tak for hjælpen og linket som nok skal gøre gavn, også senere hen. Smid et svar og du får points :)
Avatar billede jakobdo Ekspert
24. juli 2011 - 14:25 #8
Svar!
Avatar billede jakobdo Ekspert
24. juli 2011 - 23:31 #9
Takker for point.
Avatar billede kjeldsted Novice
24. juli 2011 - 23:35 #10
Og takker for hjælp.
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