Avatar billede erikjacobsen Ekspert
25. oktober 2006 - 14:57 Der er 18 kommentarer og
1 løsning

Ændring af cursor over imagemap i Firefox

http://n0p.com/eksperten/ er der 5 billeder. Jeg vil gerne at markøren ændres til 'move', når billedet er en imagemap (bruger usemap-attributten), og når browseren er Firefox 1.5 og 2.0.

Dvs. det skal virke som billede 2 i linket ovenfor.

Jeg kan læse på nettet, at det ikke er ligetil, måske endda svært, måske endda umuligt. Men intet er umuligt før man har spurgt eksperten.dk's eksperter ;)
Avatar billede mstorgaard Praktikant
25. oktober 2006 - 17:01 #1
Jeg kører i Firefox 2.0, og jeg ser ingen problemer i de eksempler du har givet.
Avatar billede erikjacobsen Ekspert
25. oktober 2006 - 17:05 #2
"ingen problemer" - ser du markøren ændre sig på samme måde når du holder den over billede 1 som når du holder den over billede 2 ?
Avatar billede mstorgaard Praktikant
25. oktober 2006 - 17:30 #3
Move-markøren er den markør med fire pile til hver sin side, right?

Og ja, det gør jeg, de er identiske
Avatar billede tjaz Nybegynder
25. oktober 2006 - 17:37 #4
Jeg har 1.5.0.7 og der der den ganske korrekt ikke, men prøvede med:

onMouseOver="this.style.cursor='move'"

hvilket ser ud til at virke fint
Avatar billede tjaz Nybegynder
25. oktober 2006 - 17:38 #5
hov, skift lige det ene "der" ud med "er" så giver sætningen mening :P
Avatar billede erikjacobsen Ekspert
25. oktober 2006 - 17:43 #6
Ja, det er den med de 4 pile n-s-ø-v.  Det får jeg ikke hos mig, sjovt nok, ellers spurgte jeg ikke ;)
Der kommer et eksempel med din onmouseover lidt senere på dagen, tjaz.
Avatar billede erikjacobsen Ekspert
25. oktober 2006 - 21:32 #7
Billede 6 på ovennævnt link er nu med onmouseover. Jeg ser ingen forskel - der kommer ikke en 'move' markør.
Avatar billede mstorgaard Praktikant
25. oktober 2006 - 22:00 #8
Ved mig er der stadig Move-markør ved alle billeder (:
Avatar billede erikjacobsen Ekspert
25. oktober 2006 - 22:05 #9
Ja, det er ret sjovt, storgaarden. Det er ikke fordi du anvender FF i en slags IE-mode?
Avatar billede mstorgaard Praktikant
25. oktober 2006 - 22:09 #10
Nej, jeg har en IE tab installeret og i IE tab fungerer det også, men ellers har jeg ikke noget "ie-agtigt" i min ff
Avatar billede olebole Juniormester
26. oktober 2006 - 14:23 #11
<ole>

Hej Erik  :)
Desværre har udviklerne omkring FF ikke været i stand til at vedligeholde det fremragende produkt, de i sin tid fik overdraget, på en måde, så dets høje standard blev bevaret.
FF indeholder myriader af bugs - hvoraf mange er katastrofale - og flere synes at dukke op, jo mere man bruger den og jo mere komplekse ens applikationer bliver. Forspringet i forhold til IE er ved at være godt og grundigt sat til ... de tos fejl ligger blot lidt forskellige steder  :o|

Den eneste løsning, jeg kan få øje på, er at udnytte det faktum, at browsere generelt synes at tildele det først læste area det højeste z-niveau ... 'z-index' falder, efterhånden som browseren læser areas i et map.
Du kan derfor lave et rektangulært area med samme dimensioner som billedet - og lægge det 'nederst' (skrive det sidst i map'et). Herefter kan du lægge onmousemove-handlers på de forskellige areas og ændre cursor for hele billedet:

<script type="text/JavaScript">
function  setCursor(o, sCurs) {
    var id = o.parentNode.getAttribute("name").split("Map")[0];
    document.getElementById(id).style.cursor = sCurs;
}
</script>

<img id="gnu" src="test.gif" style="width:300px;height:200px;border:1px solid black;" usemap="#gnuMap">

<map name="gnuMap">
    <area shape="circle" coords="222,131,55" href="#" title="circle" onmousemove="setCursor(this, 'move')">
    <area shape="rect" coords="50,20,180,70" href="#" title="rectangle" onmousemove="setCursor(this, 'default')">

    <area shape="rect" coords="0,0,300,200" href="//" title="background" onclick="return false" onmousemove="setCursor(this, 'crosshair')">
</map>

Ekstraktionen af elementets ID er quick 'n' dirty - men du kan selv dele den over flere linjer for at feje evt. fejl op under vejs ... eller finde helt andre måder at kalde billedet på  ;o)

/mvh
</bole>
Avatar billede erikjacobsen Ekspert
26. oktober 2006 - 14:33 #12
Tak, Ole. Jeg har selv i dag kigget på alternativer til at anvende det som imagemap, der umiddelbart ville være det nemmeste. Løsningen bliver nok en onclick event på et almindeligt <img>, der håndterer cursor-ændringer uden problemer. Jeg aflæser så (på forskellig vis) hvor der er klikket, og regner mig frem til hvad der skal ske - det er heldigvis ækvidistante og uniforme rektangler jeg skal ramme, så det kræver kun 7. klasses matematik ;)

Men det er klart at med et mere kompliceret, eller ikke på forhånd kendt, imagemap, ville det ikke være en synderlig nem løsning.

Jeg kommer nok med en skitse af løsningen her.

Og siden I nu ikke spørger, så lad mig alligevel: nej, den endelige løsning har ikke noget med ølflasker at gøre. Det var bare det første billede jeg faldt over...
Avatar billede olebole Juniormester
26. oktober 2006 - 15:38 #13
- nåja ... Frascatti-propper kan jo beskrives med en ret simpel geometri (i en venlig vinkel fra fotografens side, that is!)  ;D

Da det gik op for mig, at image-maps udgår med XHTML2.0 - og før jeg fandt ud af, at der kommer en substitut iform af map-attributes til brug på elementerne, der kan implementere billeder - skrev jeg faktisk et helt mouse-event abstraktions objekt, der kan implementere 'map-areas' som både rektangler, cirkler og polygoner.
Besværligt, ja ... men det kan egentlig gøres forbløffende hurtigt og velperformende, hvis man gider spilde tilstrækkelig megen tid  ;o)
Avatar billede erikjacobsen Ekspert
26. oktober 2006 - 15:47 #14
Tror du ikke den første anvendelse af XHTML2.0 vi ser, bliver på plejehjemmet når vi skal vælge dagens menu. Men betryggende at vide der bliver noget i retning af imagemaps, så vi bare kan pege på et hvidløgsmarineret fasanbryst og et glas Frascati.

Desværre skal min løsning virke i går, så ...
Avatar billede olebole Juniormester
26. oktober 2006 - 16:00 #15
Skal det nåes inden da, skal det vist gå en del hurtigere, end det plejer ... og til den tid beder vi alligevel bare om et glas hvidløgsmarineret Frascati og en flaske fasanbryst - og kan ikke huske et klap om map-images ... eller HXTLM 0.2  :D

- og fuld forståelse for det andet! Hvorfor tror du, jeg skrev: "... spilde tilstrækkelig megen tid"?  ;o)
Avatar billede erikjacobsen Ekspert
27. december 2006 - 11:00 #16
Smid lige et par svar, så jeg kan afgøre hvem der skal belønnes.
Avatar billede mstorgaard Praktikant
03. januar 2007 - 13:22 #17
Svar? :)
Avatar billede erikjacobsen Ekspert
03. januar 2007 - 14:04 #18
Tjah, Ole - du er kommet for sent til uddeling af hundekiks.
Avatar billede mstorgaard Praktikant
03. januar 2007 - 14:49 #19
Bjæf (betyder 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