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

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Hvad f**** sker der med IE6 her?
Fra : Stig Johansen


Dato : 01-09-08 23:03

Hej alle.

Jeg er ved at lave noget keyword highlighting.
Til det henter jeg innerHTML via Javascript og sætter lidt tags på.

Det virker fint i Firefox, men IE6 laver lort i det.

For at illustrere problemet har jeg lagt en alert ind umiddelbart efter en
getElementById osv.

Hvis man kigger på alert boksen, og sammenholder det med HTML'et inden
ændringen, så er det _ikke_ det samme der står på skærmen og i alert boxen.
Min IE6 stripper linieskift - lidt som vinden blæser, ingen logik.

<http://w-o-p-r.dk/storm.monitor/mssql/mssql.create.trigger.asp>

Er det et generelt problem med IE6, eller er det relateret til specifikke
tags ?

Og, da jeg ikke har IE7, sker det samme dér ?

--
Med venlig hilsen
Stig Johansen

 
 
Birger Sørensen (01-09-2008)
Kommentar
Fra : Birger Sørensen


Dato : 01-09-08 23:30

Stig Johansen formulerede tirsdag:
> Hej alle.
>
> Jeg er ved at lave noget keyword highlighting.
> Til det henter jeg innerHTML via Javascript og sætter lidt tags på.
>
> Det virker fint i Firefox, men IE6 laver lort i det.
>
> For at illustrere problemet har jeg lagt en alert ind umiddelbart efter en
> getElementById osv.
>
> Hvis man kigger på alert boksen, og sammenholder det med HTML'et inden
> ændringen, så er det _ikke_ det samme der står på skærmen og i alert boxen.
> Min IE6 stripper linieskift - lidt som vinden blæser, ingen logik.
>
> <http://w-o-p-r.dk/storm.monitor/mssql/mssql.create.trigger.asp>
>
> Er det et generelt problem med IE6, eller er det relateret til specifikke
> tags ?
>
> Og, da jeg ikke har IE7, sker det samme dér ?

Umiddelbart er problemet det samme i IE7... Har ikke set det i IE 6,
men det ser heller ikke rigtigt ud i 7'eren.

Du skriver ikke hvordan du gør.
Tror måske umiddelbart det har noget at gøre med IE's behandling af CR
LF.
Din tekst står i <code> tags, og der er ingen HTML break tags - og
eftersom du læser det med innerHTML, kan man sagtens forestille sig, at
M$ kan få gjort rod af det...
Prøv måske at læse med teksten fra <code> tagget med textContent i
stedet...

Birger



Stig Johansen (02-09-2008)
Kommentar
Fra : Stig Johansen


Dato : 02-09-08 06:34

Birger Sørensen wrote:

> Umiddelbart er problemet det samme i IE7... Har ikke set det i IE 6,
> men det ser heller ikke rigtigt ud i 7'eren.

P*s - ikke pga 6'eren men 7'eren.

> Du skriver ikke hvordan du gør.

Det optræder allerede i starten.
Det er kun disse to linier
text = document.getElementById(id).innerHTML ;
alert(text);

> Tror måske umiddelbart det har noget at gøre med IE's behandling af CR
> LF.

Jeg havde nok forventet noget bøvl, men her ser det ud til sv*net stripper
nogle af CRLF allerede ved document.getElementById(id).innerHTML.
Jeg er faktisk ret chokeret over hvordan man har lavet den bagvedliggende
kode(IE) - noget random programmering måske?

> Din tekst står i <code> tags, og der er ingen HTML break tags - og
> eftersom du læser det med innerHTML, kan man sagtens forestille sig, at
> M$ kan få gjort rod af det...

<code> tags er fordi der er tale om TSQL kode, men ellers er jeg græsk
katolsk. Årsagen til der ikke er HTML breaks i er, at jeg klippe/klistrer
kildekoden over fra 'udviklingsværktøjet'.
En manuel redigering vil være både bøvl og en fejlkilde (for mig).
Jeg opdagede det da jeg var ved at konvertere til <br/> - jeg har prøvet
både med \r, \n samt \r\n, men de er squ _helt_ væk.

Der er jo helt klart tale om en bug i IE, så det undrer mig der ikke er
nogen der har opdaget - og rettet - den ?

> Prøv måske at læse med teksten fra <code> tagget med textContent i
> stedet...

Det havde jeg prøvet, også innerText, men det er samme resultat.
Nu har jeg også prøvet med en <div>, og igen samme resultat.

TSQL'et er beregnet til MS SQLServer administratorer, hvor IE er en
forudsætning for installation.
Man må derfor forvente, at det er IE only folk, så det er lidt grotesk man
bliver nødt til at lave Firefox only kode.

Men der er vel ikke andet at gøre end at teste mod IE, og undgå
formatteringen, og skrive 'Hvis du vil se det korrekt, så installér
Firefox' <VBG>

BTW ved du om man i den kommende IE8 kan bruge document.all som test for
IE ?

--
Med venlig hilsen
Stig Johansen

Birger Sørensen (02-09-2008)
Kommentar
Fra : Birger Sørensen


Dato : 02-09-08 10:33

Stig Johansen har bragt dette til verden:
> Birger Sørensen wrote:
>
>> Umiddelbart er problemet det samme i IE7... Har ikke set det i IE 6,
>> men det ser heller ikke rigtigt ud i 7'eren.
>
> P*s - ikke pga 6'eren men 7'eren.
>
>> Du skriver ikke hvordan du gør.
>
> Det optræder allerede i starten.
> Det er kun disse to linier
> text = document.getElementById(id).innerHTML ;
> alert(text);
>
>> Tror måske umiddelbart det har noget at gøre med IE's behandling af CR
>> LF.
>
> Jeg havde nok forventet noget bøvl, men her ser det ud til sv*net stripper
> nogle af CRLF allerede ved document.getElementById(id).innerHTML.
> Jeg er faktisk ret chokeret over hvordan man har lavet den bagvedliggende
> kode(IE) - noget random programmering måske?
>
>> Din tekst står i <code> tags, og der er ingen HTML break tags - og
>> eftersom du læser det med innerHTML, kan man sagtens forestille sig, at
>> M$ kan få gjort rod af det...
>
> <code> tags er fordi der er tale om TSQL kode, men ellers er jeg græsk
> katolsk. Årsagen til der ikke er HTML breaks i er, at jeg klippe/klistrer
> kildekoden over fra 'udviklingsværktøjet'.
> En manuel redigering vil være både bøvl og en fejlkilde (for mig).
> Jeg opdagede det da jeg var ved at konvertere til <br/> - jeg har prøvet
> både med \r, \n samt \r\n, men de er squ _helt_ væk.
>
> Der er jo helt klart tale om en bug i IE, så det undrer mig der ikke er
> nogen der har opdaget - og rettet - den ?

M$?
Det er billigere at ansætte (fantasiforladte) forfattere til
fejlbeskrivelser, end programmører til at rette fejlene...

>
>> Prøv måske at læse med teksten fra <code> tagget med textContent i
>> stedet...
>
> Det havde jeg prøvet, også innerText, men det er samme resultat.
> Nu har jeg også prøvet med en <div>, og igen samme resultat.

Prøvet DOM?
Ved godt det kommer fra Mozilla, men alle tekster står i "text"
elementer. Jeg har aldrig brugt dem, men de er der, også i IE. Måske
står teksten rigtigt der, og det er rutinerne der henter dem ud, der
bøvler.
Et eller andet sted må det jo stå rigtigt, ellers kan det da ikke vises
rigtigt på skærmen...

>
> TSQL'et er beregnet til MS SQLServer administratorer, hvor IE er en
> forudsætning for installation.
> Man må derfor forvente, at det er IE only folk, så det er lidt grotesk man
> bliver nødt til at lave Firefox only kode.

Lidt? 8-o

>
> Men der er vel ikke andet at gøre end at teste mod IE, og undgå
> formatteringen, og skrive 'Hvis du vil se det korrekt, så installér
> Firefox' <VBG>
>
> BTW ved du om man i den kommende IE8 kan bruge document.all som test for
> IE ?

Jeg ved det ikke, men kan ikke forestille mig andet. Ellers mister IE
bagudkompatibiliteten.
Men man kan jo teste på andet også - uden dog at vide, om det stadig
findes i IE8 (document.selection, window.event ...).
Ellers er der window.navigator.appName - den skulle vel være god nok i
IE8 også?

Birger



Stig Johansen (02-09-2008)
Kommentar
Fra : Stig Johansen


Dato : 02-09-08 19:11

Birger Sørensen wrote:

> Stig Johansen har bragt dette til verden:
>> Der er jo helt klart tale om en bug i IE, så det undrer mig der ikke er
>> nogen der har opdaget - og rettet - den ?
>
> M$?
> Det er billigere at ansætte (fantasiforladte) forfattere til
> fejlbeskrivelser, end programmører til at rette fejlene...

Minde mig om
"Error: an unexpected error occured"
"Error: a catastrophical error occurred"
og ikke mindst (vistnok fra Win 3.x tiden"
"Error 0:"

Det er godt nok nemt at finde ud af hvad der skete hvor....

> Prøvet DOM?

I'm too old for that shit, eller sagt på en anden måde:

Jeg har i stedet lavet en valgmulighed for IE brugere, så de kan få vist
koden som den skal bruges - uden fremhævning -, eller få den vist med
fremhævning - der dog ikke kan bruges direkte(copy/paste).

>> Man må derfor forvente, at det er IE only folk, så det er lidt grotesk
>> man bliver nødt til at lave Firefox only kode.
>
> Lidt? 8-o

He.

>> BTW ved du om man i den kommende IE8 kan bruge document.all som test for
>> IE ?
>
> Jeg ved det ikke, men kan ikke forestille mig andet. Ellers mister IE
> bagudkompatibiliteten.

Det har du ret i. Jeg tænker mere på det ævl med 'standards mode' og
'compatibility mode'.

Spørgsmåler er nok hvor langt 'han' vil gå med sit 'standards mode', om det
kun er redering eller også J(ava)Script.

> Ellers er der window.navigator.appName - den skulle vel være god nok i
> IE8 også?

Den vil returnere IE i min Konqueror, så det kan vi ikke bruge (hér

--
Med venlig hilsen
Stig Johansen

Martin (02-09-2008)
Kommentar
Fra : Martin


Dato : 02-09-08 23:12

Stig Johansen wrote:
>> Ellers er der window.navigator.appName - den skulle vel være god nok i
>> IE8 også?
>
> Den vil returnere IE i min Konqueror, så det kan vi ikke bruge (hér
>

jQuery bruger dette

var userAgent = navigator.userAgent.toLowerCase();

// Figure out what browser is being used
jQuery.browser = {
   version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [])[1],
   safari: /webkit/.test( userAgent ),
   opera: /opera/.test( userAgent ),
   msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
   mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test(
userAgent )
};

fra linje 1221 i
<http://code.google.com/p/jqueryjs/downloads/detail?name=jquery-1.2.6.js&downloadBtn=>

Så måske med noget msie og selvfølgelig versions nummeret...

Nu ved jeg ikke hvad Konquerer udgiver sig for, men ved at matche både
browser og version, kan du finde frem til om browseren er IE

Stig Johansen (03-09-2008)
Kommentar
Fra : Stig Johansen


Dato : 03-09-08 00:13

Martin wrote:

> jQuery bruger dette
>
> var userAgent = navigator.userAgent.toLowerCase();

Tak, men jeg vil helst undgå noget browser specifikt.
I det her tilfælde ser det ud til at både IE6 og IE7 f*ucker op i
linebreaks, så mon ikke også IE8 vil gøre det.
Jeg har valgt bare at teste på document.all

> Nu ved jeg ikke hvad Konquerer udgiver sig for, men ved at matche både
> browser og version, kan du finde frem til om browseren er IE

Det bestemmer man på en liste med mulighed for specifikation pr. domæne.
Af hensyn til alle de sn*taber der tester for IE, kører jeg med IE6/Windows
XP, og det gælder også i navigator.userAgent.

He - kommer i tanke om en funktionsprøve jeg engang udførte for VTU.
Her havde man(leverandøren) brugt et CMS fra MS som underlag i en
delfunktion, og intet virkede.
Årsag - den smed en masse vbscript-skrammel op i den tro det var IE.

--
Med venlig hilsen
Stig Johansen

Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409073
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste