Avatar billede per1291 Nybegynder
13. juli 2005 - 15:08 Der er 12 kommentarer og
1 løsning

Eksempel på browsercheck efterlyses

Jeg er ved at redigere i en artikel, som omhandler Browsercheck.

Jeg har brugt et eksempel, hvor man f.eks. checker om browseren er en Netscape 3+ eller en Internet Explorer 3+.
Jeg vil gerne erstatte mit eksempel med noget mere nutidigt.

Er der nogen af jer, der har et stykke kode liggende, hvor I selv bruger et browsercheck?
Så vil jeg meget gerne se det. Gerne med en forklaring på, hvorfor det er nødvendigt at tage højde for browsertypen i det konkrete tilfælde.

Hvis I har flere sådanne kodestumper liggende, så vil jeg nok være mest interesseret i noget, der handler om at fastsætte størrelsen på en div eller iframe eller et vindue.
Avatar billede olebole Juniormester
13. juli 2005 - 16:46 #1
<ole>

Med al respekt, Per ... dette er en helt generel betragtning og er ikke på nogen måde ment personligt.

Hvis du ikke selv har eksempler på brugen af browsercheck-scripts, hvordan kan du så skrive en artikel om emnet?
Hvis du skal have forklaret et scripts virkemåde, hvordan kan du så skrive en artikel om scriptet?

Hvis du ikke kan dy dig for at skrive en artikel, så skriv om et emne, du kender ud og ind. WWW flyder i artikler/tutorials, der er fyldt med fejl og misforståelser - og det har kun til resultat at gøre læserne dårligere til at kode.

Personligt finder jeg det grænsende til det uforskammede, når folk skriver artikler/tutorials om emner, de ikke selv mestrer. Resultatet er ikke til glæde for andre end 'forfatteren' - og så er der ingen grund til at 'forurene' WWW med tvivlsomme og fejlfyldte forklaringer.

Lad nu de kodere skrive artikler, som vitterligt har forstand på det, du synes, der skal skrives artikler om. Folk, der skriver artikler uden den fornødne viden, skader mere end de gavner.

- just my two cents  :)

/mvh
</bole>
Avatar billede per1291 Nybegynder
13. juli 2005 - 19:58 #2
Med al respekt, Ole.

Jeg vil give dig ret i, at der findes ubrugelige artikler. Men lad nu være med at skyde mit projekt i sænk, for mit budskab er absolut nyttigt: Man kan i mange tilfælde erstatte et browsercheck med noget andet og i virkeligheden bedre.

Hvis jeg får nogle nutidige eksempler, så skal jeg nok fordybe mig i dem, og finde ud af om det er muligt at erstatte browserchecket med noget endnu bedre. Selv tjekker jeg min kode på 4 forskellige browsere - og det er hidtil altid lykkedes mig at finde på noget kode der virker overalt.

Et browsercheck har normalt begrænset levetid - og vi kan ikke engang være sikre på at nye versioner af den samme browser er bagud-kompatible. Derfor vil jeg gerne slå til lyd for, at man i stedet for at checke hvad browseren hedder, spørger browseren selv hvordan den vil håndtere en konkret kode.

Jeg skriver godt. Hvis du vil tage dig tid til at kigge den færdige artikel igennem, så vil jeg være meget taknemmelig. Jeg ved bare ikke hvordan jeg kommer i kontakt med dig uden om dette forum. Min egen mailadresse er per.andersen@djurs.net.

Hilsen  Per
Avatar billede olebole Juniormester
13. juli 2005 - 20:16 #3
Okay ... det bedste, du nok kan gøre, er at spørge på navigator.userAgent - evt:
    var ua = navigator.userAgent().toLowerCase()
- hvorefter du kan teste med indexOf:
    if (ua.indexOf("opera")!=-1) {
        // En opera
    }
    else if (ua.indexOf("gecko")!=-1) {
        // En Moz
    }
    else if (ua.indexOf("msie")!=-1) {
        // En IE
    }

Læg mærke til rækkefølgen, da Opera også skriver 'MSIE' :o|

Handler det om at finde ud af, om en bestemt feature understøttes, er det næsten altid en fordel at spørge explicit på den pågældende feature:

if (window.showModalDialog) {
    var dialog = window.showModalDialog( ... blabla blabla ... );
} else {
    // Nok noget med en popup
}

Jeg kender ikke lige et link til et browsercheck - og da jeg ikke selv skriver til pre-version 5 browsere, bruger jeg som oftest metode nummer to. Derudover kender jeg en masse browsersvagheder, som jeg efterhånden mere eller mindre automatisk skriver udenom.

Håber, det var til lidt hjælp  :)
Avatar billede per1291 Nybegynder
13. juli 2005 - 20:59 #4
Tak, Ole, for selve browserchecket. (Jeg vil selvfølgelig lige efterprøve det! Men det ligner da det "man" plejer at bruge ...)

Som du siger, kan man ofte med fordel spørge på den pågældende feature. Det er i grunden dét jeg gerne vil viderebringe. Nettet myldrer med forældet kode, der anbefaler browsercheck, og folk der ikke ved så meget som dig bør have at vide at det nuomdage tit er overflødigt. Ellers vil de jo bruge deres tid på at sætte sig ind i noget ubrugeligt.

Man er nødt til at vide, hvornår browsere vil håndtere en kode forskelligt. Men man behøver for det meste ikke at vide, præcis hvilke browsere der gør hvad.

Og hermed er ballet genåbnet. Er der nogen der har eksempler på BRUGEN af browsercheck?

Hilsen Per
Avatar billede per1291 Nybegynder
15. juli 2005 - 11:33 #5
Så lad mig selv give et eksempel.

Jeg fik til opgave at lave en rulletekst.
Anbragte teksten i en string og anbragte denne string i en div.

<Løkke>
Rul 1 pixel ad gangen vha. style.left--, indtil du er kommet igennem første bogstav;
Flyt første bogstav bagest i din string;
Anbring den nye string i din div vha. innerHTML;
Nulstil style.left;
</Løkke>

Denne kode fungerer fint i Internet Explorer og Opera.
Men det viser sig at den giver et flakkende billede i Netscape og Mozilla, idet div'en cleares når man bruger innerHTML.
Så jeg lavede en speciel udgave til disse to browsere:
Fordoblede min string førend jeg anbragte den i div'en.

<Løkke>
Rul 1 pixel ad gangen vha. style.left--, indtil du er kommet igennem første halvdel af din string;
Nulstil style.left;
</Løkke>

Denne kode fungerer fint i Netscape og Mozilla.
En test viser at den også kan erstatte koden i Internet Explorer.
Men i Opera opstår et nyt problem:
String'ens usynlige overflow bevirker at din div bliver bredere end skærmen, sådan at der fremkommer en overflødig scroll-pil i bunden af skærmen.

I den færdige løsning tog jeg derfor også højde for dette.

- - -

Jeg kunne godt bruge et eksempel som er lidt simplere at forklare.
Det er dét jeg efterlyser.

Hilsen  Per
Avatar billede olebole Juniormester
15. juli 2005 - 16:32 #6
Så ville jeg finde ud af, hvilke fejl, der er lavet - for det er to fejl, der ikke bør opstå, hvis koden er skrevet hensigtsmæssigt. F.eks. kunne man skrive hele teksten i ét div - som så flyttes rundt i et andet div.

I det hele taget er det sjældent, det er nødvendigt at foretage browsercheck, når bare ens kode er skrevet ordentligt og hensigtsmæssigt. Naturligvis bør det bruges, når man anvender specialfeatures, men langt de fleste gange, det ses brugt, er det som panikløsninger  :)
Avatar billede per1291 Nybegynder
15. juli 2005 - 17:23 #7
Enig med dig, Ole, i at det kan gøres uden browsercheck - og enig i, at browsercheck ofte er panikløsninger.

Ikke enig med dig i, at det er "fejl" hos programmøren, når skidtet ikke virker. Vi har nogle standard-specifikationer at gå ud fra, men dokumentationen for hver enkelt browser fortæller ikke, hvornår disse specifikationer efterleves eller ej. Som du selv fortæller, er man nødt til at trække på sin erfaring om browser-svagheder.

Specialfeatures - de er ikke interessante, for man ved jo (formentlig) på forhånd at de er "browser-specifikke".

Jeg udfordrer dig hermed til at implementere mit første "pseudo-kode" eksempel på en måde så man undgår at rulleteksten "flakker".

(Jeg vil forresten være glad for en sådan demonstration. Den vil indgå i min artikel, naturligvis med credits til dig!)

Hilsen  Per
Avatar billede roenving Novice
15. juli 2005 - 21:59 #8
Er det ikke bare at gøre som ole har lavet, og jeg lige har justeret en anelse: http://www.eksperten.dk/spm/543017
Avatar billede per1291 Nybegynder
16. juli 2005 - 17:32 #9
Oles kode er pæn. Svarer nøje til min model 2. Laver også samme fejl i Opera.

Men Oles marquee ændrer kun innerHTML mens skærmen er blank. Derfor oplever man ikke nogen flakken i Netscape.

I min rulletekst er skærmen aldrig blank. Der vil altid være bogstaver på skærmen. Teksten kan f.eks. være "Meddelelse 1 *** Meddelelse 2 *** Meddelelse 3 *** Meddelelse 1 *** " osv.

Hilsen  Per
Avatar billede per1291 Nybegynder
16. juli 2005 - 20:32 #10
Nå, lad mig komme med en indrømmelse.
Jeg sagde, at jeg havde løst problemet med Opera-scrollbaren i bunden af skærmen.
Min løsning duede desværre ikke, så lige nu har jeg lavet en løsning i form af et browsercheck, hvilket er en falliterklæring.
Den rigtige løsning må være noget med at måle hvor meget der scrolles vandret.

Hilsen  Per
Avatar billede per1291 Nybegynder
17. juli 2005 - 00:17 #11
Mange af de kodestumper, som indsendes til vurdering på dette forum, er gennemsyret af browsercheck.

Men når det handler om at diskutere begrebet browsercheck, eller hvis man kigger på min rulletekst-opgave, så gælder det ikke om at "have check på det mindste komma" og vide "hvordan man gør".

Der er derimod brug for en kreativ indgangsvinkel.

Alle indlæg er velkomne. - Hilsen  Per
Avatar billede per1291 Nybegynder
17. juli 2005 - 16:10 #12
roenving -> Jeg har 100 spørgsmål til dig, hver gang jeg ser noget du har lavet (eller været med til at lave). Nu vil jeg gerne vide: Hvorfor bruger du en speciel notation, når der optræder æ,ø,å i en tekststreng? Vil dit charset ikke overflødiggøre dette? [Jeg vil tro at svaret har noget at gøre med HTML-fortolkning og Javascript-fortolkning.]

Min artikel vil blive færdiggjort i løbet af nogle dage. Jeg vil afslutte dette spørgsmål i morgen mandag over middag, medmindre der kommer nye indlæg. Foreløbig tilhører pointene Ole og roenvig. Læg venligst et par svar. - Hilsen  Per
Avatar billede per1291 Nybegynder
18. juli 2005 - 15:22 #13
Lukker og slukker. Tak for hjælpen, og fordi I lyttede. - Hilsen  Per
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