Autor Zpráva
Radek H
Profil
Dobrý den,
už si nevím rady, našel jsem script DragDrop a k obrázku bych chtěl přidat odkaz na stránku relativní k adrese, a tady mi nastává problém onmouseup a onmousedown funguje jako onclick takže při upuštení obrázku mě to hned přesmeruje což je nežádoucí
pro upřesnění bych chtěl chytnout obrázek, přesunout, položit obrázek a pak to udělat s jiným, potom clickem otevřít odkaz. Takových obrázků budu mít asi 20+-
(ještě bych chtěl nahodné rozmístění a nahodnou rotaci ale na to snad nějak přijdu sám:) )

<head>
  <style type="text/css">
.drag{
position:relative;
cursor:hand;
z-index: 100;
}
  </style>
  <script type="text/javascript">
/***********************************************
* Drag and Drop Script: © Dynamic Drive (http://www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit http://www.dynamicdrive.com/ for this script and 100s more.
***********************************************/
var dragobject={
z: 0, x: 0, y: 0, offsetx : null, offsety : null, targetobj : null, dragapproved : 0,
initialize:function(){
document.onmousedown=this.drag
document.onmouseup=function(){this.dragapproved=0}
},
drag:function(e){
var evtobj=window.event? window.event : e
this.targetobj=window.event? event.srcElement : e.target
if (this.targetobj.className=="drag"){
this.dragapproved=1
if (isNaN(parseInt(this.targetobj.style.left))){this.targetobj.style.left=0}
if (isNaN(parseInt(this.targetobj.style.top))){this.targetobj.style.top=0}
this.offsetx=parseInt(this.targetobj.style.left)
this.offsety=parseInt(this.targetobj.style.top)
this.x=evtobj.clientX
this.y=evtobj.clientY
if (evtobj.preventDefault)
evtobj.preventDefault()
document.onmousemove=dragobject.moveit
}
},
moveit:function(e){
var evtobj=window.event? window.event : e
if (this.dragapproved==1){
this.targetobj.style.left=this.offsetx+evtobj.clientX-this.x+"px"
this.targetobj.style.top=this.offsety+evtobj.clientY-this.y+"px"
return false
}
}
}
dragobject.initialize()
  </script>

</head>
<body>

<div><a href="galerie/3Da2D.html"><img src="galerie/polaroid/3D/dyne.GIF" class="drag" alt="polaroid" height="210" width="200"></a>
</div>

<div><a href="galerie/3Da2D.html"><img src="galerie/polaroid/3D/avatar.gif" class="drag" alt="polaroid" height="210" width="200"></a>
</div>

</body>
děkuji za odpověď
peta
Profil
???
onclick = onmousedown + onmouseup
Pokud to nema presmerovat po kliku, tak zakazes udalost pres return false. Jenze, ty pak pises, ze to po kliku jednou ma a podruhe nema presmerovat. Takze si upresni, kdy to nema. Take jsem si vsiml, ze mas snimani udalosti vazane na cely dokument.
- Treba, kdyz drzis delsi dobu, tak spustis blokovani udalosti, tim ignoruje klik. (Treba spustit pri kliku casovac, kdyz napocita 3s, tak spusti drag, jinak udela klik)
- Nebo premenis otevirani odkazu na doubleclick.
Radek H
Profil
peta:
- Treba, kdyz drzis delsi dobu, tak spustis blokovani udalosti, tim ignoruje klik. (Treba spustit pri kliku casovac, kdyz napocita 3s, tak spusti drag, jinak udela klik)

děkuji za odpověd tohle sem hledal ale netuším jak na to
1Pupik1989
Profil
Já bych možná testoval, jestli se změnila pozice myši v onmouseup oproti onmousedown. Pokud se nezměnila, tak se může přesměrovat. Já to tak mám s tolerancí 3 px na všechny strany. Občas se totiž stane, že někomu ta myš ujede.
Radek H
Profil
peta:
- Treba, kdyz drzis delsi dobu, tak spustis blokovani udalosti, tim ignoruje klik. (Treba spustit pri kliku casovac, kdyz napocita 3s, tak spusti drag, jinak udela klik)

no a byl bys tak hodnej řekl mi jak napsat onclick (není onmousedown víc jak 1500milisekund) onclick (je onmousedown max1500milis.) nebo sem uplně vedle?


1Pupik1989:

Já bych možná testoval, jestli se změnila pozice myši v onmouseup oproti onmousedown. Pokud se nezměnila, tak se může přesměrovat. Já to tak mám s tolerancí 3 px na všechny strany. Občas se totiž stane, že někomu ta myš ujede.
nad tím jsem přemejšlel taky, ale jsem tam kde předtím, když to nevydim nemůžu to použít:)

jen se do mě pusťte ať to nedělám když tomu nerozumím

ondblclick sem taky zkoušel a má to opačnej efekt tam musím kliknout prozměnu 3x

asi už jste pochopili že jsem naprostej JS analfabet když ho vydim tak ho i po chvíli začnu chápat ale, že bych to dokázal napsat??
peta
Profil
1Pupik1989: Na to bych nespolehal, 3px jsou malo, vzhledem k moznosti nastaveni citlivosti mysi, kdyz vypnes dokovani a nastavis vetsi citlivost. Coz mam treba ja, pac mi vyhovuje kyvat zapestim doprava doleva a ne presouvat celou ruku po podlozce.
Ale napad je to dobry, dal bych tam treba 6-10 px.

Radek H: No, ale, ja to fakt nutne nepotrebuji resit ani za to nejsem placenej. Na jpw je nekolik prikladu na casovani i blokovani udalosti. Google ma taky plno prikladu. Pupikuv napad je taky dobrej a snadnejsi na realizaci. Zjistis rozdil souradnic a podle toho bud vratis true nebo false. Nevyhodou je, ze nepujde posouvat o tech 3 nebo 6-10 px. Coz ti mozna nevadi, protoze presouvas na vetsi vzdalenosti.
1Pupik1989
Profil
peta: Taky jsem zjistil že to není ono. Tak to teď počítám ze šířky obrazovky / 640 * 5. Vlastně děleno šířkou VGA a násobím to pěti jako toleranci. Pak počítám jestli je myš pořád v radiusu kruhu.

Nejlepší by ale bylo samozřejmě vytyčit zvlášť nějaké pole jen pro přesouvání Stačil by nějaký div.

Další možnost je udělat si button pro editování. Ten by pak přepínal do módu pro přesouvání.
peta
Profil
Ano, tlacitko prepinaji rezimu by bylo uplne nejlepsi. On ten uzivatel totiz muze omylem chytit polozku a hned ji pustit, pac chtel jinou. A kdyz mu to presmeruje, zrusi nynejsi nastaveni bez ulozeni, nebude nadsenej. Ale to predpokladam Radek H vi a nevadi mu to.
V pripade win okenek jsou spesl tlacitka na uzavreni a pruh nadpisu okna pro presun.
Radek H
Profil
tady je ukázka na vyzkoušení na Dýni je ondblclick časem se mi snad povede to náhodný rozmístění narvat do nějakýho divu

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: