/ Forside / Teknologi / Udvikling / HTML / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
HTML
#NavnPoint
molokyle 11184
Klaudi 5506
bentjuul 3377
severino 2040
smorch 1950
strarup 1525
natmaden 1396
scootergr.. 1320
e.c 1150
10  miritdk 1110
IE select text bug
Fra : Jens Gyldenkærne Cla~


Dato : 25-08-03 11:11

For nylig blev jeg opmærksom på en irriterende bug i IE6 [1].

Fejlen opstår i standardmode på sider der benytter positionering
med css. Den betyder at man ikke kan vælge tekst med musen - hvis
man forsøger, er det hele siden der vælges.

Efter lidt googling og et par eksperimenter har jeg nu fundet en
løsning der ikke smider browseren i quirks mode. Løsningen er kort
beskrevet her:
   <http://archivist.incutio.com/viewlist/css-discuss/18819>

- og man kan se min implementering af den på Erik Ginnerskovs side
her:

   <http://damu.dk/jc/usenet/diastext.shtml>

Siden uden ændringer (og med select-problem i IE) kan ses her:
<http://damu.dk/jc/usenet/diastext_p.shtml>.


I forhold til beskrivelsen af løsningen i det engelske link, har
jeg måttet lave et par modifikationer for at få det til at virke.
Her er de ændringer der skulle til

1) Tilføjet <div id="slutdiv">&nbsp;</div> nederst i dokumentet.
En helt tom div virker ikke - med med en &nbsp; virker det.

2) Tilføjet css-koden #slutdiv{ margin-top: 3000px; }
Antallet af pixels vælger man selv. Select af tekst virker fra
dokumentets top til den angivne margen. Man får noget ekstra scroll
i bunden, men alternativet er at undvære select eller at benytte
quirks mode.

3) Sat position: relative; på <body>. Uden dette virker hacket
ikke.

4) Pakket slut-div'en ind i en conditional:
   <!--[if IE]><div id="slutdiv">&nbsp;</div><![endif]-->
Det viste sig at Mozilla (og sikkert også andre) også reagerede på
hacket - ved at sætte de 3000 pixels ind før starten af dokumentet!
Ved at bruge conditional comments er det kun IE (Windows) der ser
slut-div'en. Betingelsen i kommentaren kan ændres så det kun er IE6
der fanges. Jeg ved ikke om tidligere versioner af IE har samme
problem, men eftersom det ikke findes i quirks mode er det næppe
sandsynligt.


Metoden er hermed stillet til rådighed for gruppen.

Noter:
======
[1] se indlægget her og tråden før det for nærmere detaljer:
<news:Xns93E1E421D73Ejcdmfdk@gyrosmod.cybercity.dk>
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

 
 
Erik Ginnerskov (25-08-2003)
Kommentar
Fra : Erik Ginnerskov


Dato : 25-08-03 20:38


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev

> For nylig blev jeg opmærksom på en irriterende bug i IE6 [1].
>
> Fejlen opstår i standardmode på sider der benytter positionering
> med css. Den betyder at man ikke kan vælge tekst med musen - hvis
> man forsøger, er det hele siden der vælges.
>
> Efter lidt googling og et par eksperimenter har jeg nu fundet en
> løsning der ikke smider browseren i quirks mode. Løsningen er kort
> beskrevet her:
> <http://archivist.incutio.com/viewlist/css-discuss/18819>

Interessant læsning, Jens. Det må jeg eksperimentere lidt med.

På Hjemmesideskolen kan jeg desværre ikke bare sætte én længde på en fælles
slut-div, da der er meget stor forskel på længden af siderne, Men det er så
kun et spørgsmål om at sætte et passende udvalg af afsluttende divs i css.

Mere arbejde, men når det kan afstedkomme, at jeg ikke behøver at tvinge IE6
i quirks-mode for at gøre kodeeksemplerne kopierbare, så går det endda.

--
Med venlig hilsen
Erik Ginnerskov
http://www.hjemmesideskolen.dk - http://www.html-faq.dk
http://hjem.get2net.dk/egin



Jens Gyldenkærne Cla~ (25-08-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 25-08-03 22:22

Erik Ginnerskov skrev:

> På Hjemmesideskolen kan jeg desværre ikke bare sætte én længde
> på en fælles slut-div, da der er meget stor forskel på længden
> af siderne,

Du kan jo fx lave nogle klasser i forskellige længder:

div.p1000 { margin-top: 1000px; }
div.p2000 { margin-top: 2000px; }
....

> Men det er så kun et spørgsmål om at sætte et
> passende udvalg af afsluttende divs i css.

Ja. Du skal også være opmærksom på at højden af siderne jo i mange
tilfælde afhænger af bredden af browseren. Hvis al tekst på siden
skal kunne vælges, skal du sørge for at slut-div'en i alle
opløsninger er placeret længere nede end resten af dokumentet. Det
betyder i praksis at der vil være scroll-mulighed til et tomt
område nederst på siden.

Omvendt kan det for en side der præsenterer kodestumper, måske være
nok at selve koden kan kopieres med musen. Så har man lidt mere at
spille med når man skal beregne højden på div'en.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Erik Ginnerskov (25-08-2003)
Kommentar
Fra : Erik Ginnerskov


Dato : 25-08-03 22:46


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev
>
> Du kan jo fx lave nogle klasser i forskellige længder:
>
> div.p1000 { margin-top: 1000px; }
> div.p2000 { margin-top: 2000px; }
> ...

Netop min ide til, hvordan det skulle løses.

> Ja. Du skal også være opmærksom på at højden af siderne jo i mange
> tilfælde afhænger af bredden af browseren.

Det skal tilpasses, så det virker tilfredsstillende i selv smalle
browservinduer - typisk <800 px.

> Omvendt kan det for en side der præsenterer kodestumper, måske være
> nok at selve koden kan kopieres med musen. Så har man lidt mere at
> spille med når man skal beregne højden på div'en.

Du har fat i en pointe der. Kodeeksemplerne er den vigtige del.

--
Med venlig hilsen
Erik Ginnerskov
http://www.hjemmesideskolen.dk - http://www.html-faq.dk
http://hjem.get2net.dk/egin



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste