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> |
||
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 |
#3 · Zasláno: 14. 2. 2014, 13:31:18
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 |
#4 · Zasláno: 15. 2. 2014, 10:44:34
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 |
#6 · Zasláno: 17. 2. 2014, 08:01:26
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 |
#7 · Zasláno: 17. 2. 2014, 10:25:34
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 |
#9 · Zasláno: 17. 2. 2014, 11:41:43
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
|
||
Časová prodleva: 10 let
|
0