Autor Zpráva
josef33
Profil *
Zdravím. Mám problém. Tento skript funguje v IE 10 (včetně) a níže, v novějších prohlížečích bohužel ne (IE 11, aktuální Chrome, Firefox, Opera). Můžete mi někdo z vás poradit, v čem je zakopaný pes...

Díky moc

var dragapproved=false

var z,x,y

function presun(){

if (event.button==1&&dragapproved){

z.style.pixelLeft=temp1+event.clientX-x

z.style.pixelTop=temp2+event.clientY-y

return false

}

}

function posuny(){

if (!document.all)

return

if (event.srcElement.className=="tazeni"){

dragapproved=true

z=event.srcElement

temp1=z.style.pixelLeft

temp2=z.style.pixelTop

x=event.clientX

y=event.clientY

document.onmousemove=presun

}

}

document.onmousedown=posuny

document.onmouseup=new Function("dragapproved=false")
Joker
Profil
josef33:
Ten kód mi připadá dost prasácký a těžko se v tom orientuje. Chybějící středníky, odsazení, mezery kolem operátorů…

Ale zkusím si tipnout, že problém bude v používání zastaralého window.event, které asi některé prohlížeče (už?) nepodporují.
josef33
Profil *
Joker:
Jde o jednoduchý skript na drag and drop funkci. V IE 10 chytnu objekt a přetáhnu na místo, v novějších prohlížečích na objekt kliknu a nic se neděje (jako by tam skript nebyl)...

Myslíš, že by šel window.event v rámci skriptu nahradit "něčím aktuálním"?
juriad_
Profil *
Co ty pixel* vlastnosti. Krátkým hledáním jsem nasel, ze nejsou podporované minimálne Firefoxem.

Jak ríká Joker, ten kus kódu je fakt príserný. Radeji to napis znovu.
Davex
Profil
josef33:
v novějších prohlížečích bohužel ne (IE 11, aktuální Chrome, Firefox, Opera)
Tyto prohlížeče nemají ve standarním režimu document.all (IE11 a Firefox by ho ještě mohly umět v kompatibilním režimu).
josef33
Profil *
Davex:
Mohl bys mi, prosím, sdělit čím to nahradit?
Davex
Profil
Celé přepsat.

Např.:
www.quirksmode.org/js/dragdrop.html
Chamurappi
Profil
Reaguji na Jokera:
zkusím si tipnout, že problém bude v používání zastaralého window.event, které asi některé prohlížeče (už?) nepodporují
S globálním window.event má filozofický problém jen Mozilla, ostatní prohlížeče ho podporují a zřejmě hned tak nepřestanou. Není to něco, co by zastaralo, jen jiný pohled na DOM 0.


Reaguji na Davexe:
Tyto prohlížeče nemají ve standarním režimu document.all
Webkit má. Ale projde vyhazovací podmínkou if (!document.all) return, podobně, jako by prošel Firefox v quirku. Ta podmínka bude dost možná jedinou překážkou v Exploreru 11 a v Chromu. (Čímž neříkám, že má cenu uvedený kód opravovat.)
josef33
Profil *
Díky za příspěvky. Nakonec jsem pro starší verze prohlížečů nechal původní (výše uvedený) skript a pro aktuální prohlížeče jsem zvolil řešení v podobě jQuery. Snad je to korektní řešení.
Joker
Profil
josef33:
Rozlišovat prohlížeče často nebývá dobrý nápad. Ten nový kód pro starší prohlížeče nefunguje?

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

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