18. juli 2005 - 16:54Der er
51 kommentarer og 2 løsninger
<noscript> en nødvendighed?
Hej :-)
Hvor vigtigt er det, at indsætte <noscript></noscript> i sin HTML-kode?
Jeg har set at Google ofte bruger den tekst, der findes i <noscript></noscript> som beskrivelse af de enkelte sites og synes ikke, at det er særlig hensigtsmæssigt, hvis mit site vil blive beskrevet som "Din browser understøtter ikke javascript".
Derfor vil jeg gerne høre nogle bud på om <noscript> helt bør udelades, eller om der er nogle gode fif til hvordan man benytter <noscript>, uden at Google bruger indholdet som sitebeskrivelse.
Jeg ville kun indsætte noscript-tags, hvis jeg havde meget vigtige javascript-funktioner, som var absolut nødvendige for sitets visning og/eller navigation ...
-- hvordan søgemaskinerne bruger det må jeg være dig svar skyldig, for jeg ved det ikke !-)
Roenving > De steder hvor jeg anvender javascript, anvender jeg det fordi det har en funktion (F.eks. til formularvalidering). Så, vigtige må det jo siges at være, at javascript er slået til i de tilfælde...
foxmulder58 > Jeps, den har jeg allerede set på. Men den forklarer ikke meget om fordele/ulemper ved <noscript> i forhold til bl.a. søgemaskiner.
Du kan f.eks. skrive en meta-redirect i dit noscript-tag. Hvis browseren ikke understøtter, vil brugeren så blive vippet til en anden side. Det løser det gamle, velkendte spørgsmål: "Hvordan checker jeg, om brugeren har slået JS fra - og sender ham til en anden side?" :)
apo >> Al validering af betydning foretages på serveren ... al JS-validering er kun brugervenligheds 'pjank'. Sikkerheden er det sidste sted, du bør tænke på performance. Der er sikkert en del andre steder i din kode, du kan forbedre performance ... sikkerheden bør ikke kompromiteres i den forbindelse :)
olebole > Hvordan laver jeg et sådan meta-tag? Og hvad vil forskellen på meta-løsningen og <noscript> være, i forhold til f.eks. Google? Vil meta-løsningen ikke føre til at siderne med javascript ikke bliver indekseret i Google?
Jeps, jeg validerer som nævnt også serverside (af hensyn til sikkerheden), men javascriptet smider en indviduel alert op for hver fejl, mens server-sidevalideringen kun har en type fejlmeddelelse ("Der opstod en fejl, prøv igen...").
Men det kan godt være at jeg skulle droppe javascriptvalideringen, og bruge kræfterne på server-side i stedet.
Jes >> Jeg ved, der eksisterer divergerende opfattelser, hvilket nok skyldes W3C ikke er helt klare i mælet ang. det pågældende element :)
Jeg har ikke fundet entydige tegn på, at noscript-elementer ikke må forekomme i head-sektionen af dokumentet og ikke må indeholde link- og/eller meta-elementer ... hos W3C, that is :)
olebole > Okay, ærgeligt. Det kunne ellers være rart at få noget af vide om.
Server-side vs. client-side: Jep, det ved jeg. Server-side og client-side undersøger det samme hos mig, det er kun outputet der er forskelligt (Fejlinformationerne/-procedurerne).
Som jeg ser fordelene ved klient- og server-validering:
Klient-validering bør foretages for at spare brugeren for unødige serverkald. Denne form for validering kan let give en udførlig og øjeblikkelig fejlbesked.
Server-validering bør foretages af hensyn til sikkerheden på serveren. Validerings resultaterne kan evt. samles op til en streng, der fortæller brugeren, hvad der mangler af info og/eller hvad der er forkert udfyldt. Brugeren kan så redirectes til siden, hvor fejlstrengen udskrives - og kan prøve igen.
Klient-valideringen kan derfor godt undlades - men den øger brugervenligheden væsentligt :)
- hvad angår validiteten af link- og meta-elementer i et noscript-element, er jeg ved at være i tvivl. Jeg kan se, W3C skriver: "alternate content container for non script-based rendering" - samtidig med, det bliver angivet som værende et block-level element. http://www.w3.org/TR/html401/interact/scripts.html#edef-NOSCRIPT
Det bør vel (sammen med den efterfølgende tekst) tolkes som: 1. Et noscript-element er et block-level element, der kan indeholde tekst/HTML, der skal vises, hvis ikke script kan afvikles. 2. Elementet bør vises, hvis klienten generelt ikke understøtter script - eller ikke understøtter det script-sprog, der er angivet i en tidligere script-blok. 3. Elementet må ikke optræde i head-elementet, men skal skrives i body-elementet.
Er dette korrekt - og det tror jeg efterhånden, jeg selv tror på (det hjælper nogen gange at skrive argumentationen ned, selv - hehe) - betyder det naturligvis, man _ikke_ kan have et meta- eller et link-element i et noscript-element.
Glem venligst, at jeg nogensinde har anbefalet andet :)
-- så jeg er godt nok også blevet kraftig i tvivl, selvom netop validatorens opførsel kunne tyde på at koderne har taget udgangspunkt i renderbar kode, hvilket jo ligeud er vrøvl i head-elementet !-)
-- iøvrigt er der en anden væsentlig fordel ved clientside validering: Du sparer for det meste din server for at bruge kræfter på banale brugerfejl, som f.eks. 27-cifrede postnumre, manglende mail-adresser og lignende tåbeligheder, hvilket bestemt heller ikke er noget man skal kimse af !o]
Olebole og Roenving i tvivl? Så har jeg set det med, hehe.
Jeg har selv kun set <noscript> optræde i <body> - Aldrig udenfor. Men det kunne stadig være godt at høre fra en, der ved hvordan Google har det med <noscript>.
Men er det ikke sådan, at det kun er et meget lavt procenttal, der ikke har javascript slået til, og en stor del af disse er søgemaskiner, robotter o.lign?
Roenving > Jeps, det er _netop_ derfor, jeg specificerer fejlene for brugeren i javascript og kun benytter server-side, hvis javascript-valideringen - med vilje - bliver omgået af brugeren.
Da du aldrig med sikkerhed kan vide om client-side validering omgås (ondsindede brugere kan jo tage di kode og opbygge identiske form, f.eks. bortset fra valideringen !-), validerer du forhåbentlig _altid_ serverside ...
-- til gengæld kan du i 99,9% af tilfældende undgå at serveren flere gange skal processere den samme form fra den samme bruger i den samme event, hvilket jo undlader en masse tandudtrækning på den ...
-- og forhåbentlig holder hverken ole eller jeg nogensinde op med at være i tvivl, så vi ideligt opsøger kilden til den korrekte oplysning og derved holder os nogenlunde opdateret om hvad det er det handler om !o]
Jeg validerer naturligvis _altid_ både server-side og client-side. Forskellen ligger i fejlprocedurerne. Javascriptet indeholder forskellige fejlmeddelelser, mens ASP'en stopper afsendelsen af formularinformationerne, hvis de ikke valideres korrekt, med en enkelt fejlmeddelelse "Der opstod en fejl, prøv igen..." - Dette sker kun, hvis informationerne ikke opfylder de kriterier, jeg har sat.
Kriterierne i ASP-koden er identiske med dem i javascriptet, så hvis nogen omgår dette og f.eks. indtaster flere tegn end tilladt i javascriptet, vil ASP-valideringen opfange og bremse afsendelsen. Dermed sparer jeg serveren for noget arbejde da den ikke skal behandle de småfejl, brugeren laver under indtastningen :-)
Selvfølgelig kan I også blive i tvivl, men det sker ikke så ofte, så vidt jeg har fulgt med - I virker generelt meget overbeviste omkring det, I udtaler jer om her på E ;-)
... Og det er jo den måde man lærer tingene på. Desværre har jeg bare ikke kunne finde brugbart materiale om <noscript>'s indflydelse på søgemaskiner som f.eks. Google :-/ Derfor spørger jeg de kloge hoveder her :-)
Men hvis de fleste brugere alligevel har slået javascript til (Har jeg hørt), er <noscript> vel helt overflødigt eller hvad (Er der egentlig nogle argumenter for at indsætte <noscript>)?
Søgemaskinerne aktiverer vel heller ikke formularer?
thecounter har i juni i år af over en ¼ mia. talte: Javascript 1.2+: 254501090 (95%) Javascript <1.2: 357750 (0%)> Javascript false: 10583193 (3%), mens
w3schools i januar har 11% javascript off ...
-- den eneste gyldige konklusion, man kan drage, er at de er forskellige, og så kan man gætte på forskellige grunde til det, f.eks. at w3schools besøgende er mere nørdede og/eller bevidste om farer (hvilket i hvert fald er noget vrøvl !-) eller at thecounters maskine er bedre til at frasortere bots (søgemaskiner, mail-harvesters m.m. !-)
-- og nej, søgemaskiner kan ikke 'trykke' på knapper, det ville kræve vildt sofistikerede bots, som jeg ikke tror på, man kan finde serverplads til at supportere !o]
- gamle talemåder kan være udmærkede, men også farlige i disse chattider, hvor sdauning ikke er folks stærkeste side ... jeg prøver dog alligevel at citere min gamle regnelærer: "Salig er den enfoldige, thi han er aldrig i tvivl"
- her vil det naturligvis resultere i en middelsvær meningskatastrofe, hvis den ligefor liggende sdavøfajl skulle snige sig ind: "Saglig er den ..." =8-O
Det er - helt som roenving anfører - tvivlen parret med respekten for begrebet 'godt håndværk', der driver os mod dybere forståelse ... og så for mit eget vekommende, en nærmest sygelig nysgerrighed (jeg må nok hellere undlade at stille nogen diagnoser for roenving - hehe) ;o)
roenving >> nu er rundforvirringen da sådan cirka total! Jeg vil lige kikke lidt nærmere på det - så kan det jo være, det munder ud i en mail. Ej heller W3C er jo fuldkomne :)
roenving > Men thecounter.com fører vel statistik over almindelige brugeres indstillinger på de websites, som thecounter.com fører statistik for (En bred gruppe), hvorimod w3schools.com primært kun fører statistik over webudvikleres indstillinger (Der kommer vel ikke mange andre end webudviklere på deres site).
Hvilke bevæggrunde har folk egentlig til at slå javascript fra? Er det ikke kun de halv-paranoide og suspekte individer der slår det fra? Man kommer jo ikke langt ud på nettet uden at falde over javascript...
Hvis søgerobotterne ikke kan bruge formularer, behøver jeg ikke at forhindre dem i at besøge siderne via <noscript> :-) Så er det kun et spørgsmål om hvad jeg gør med brugere uden javascript slået til...
Der kommer nok en del kommende webudviklere på w3schools.com, men nok meget få webudviklere. Vores gode nordmand er nok bare ikke meget bedre til at lave statistik, end til at skrive tutorials. Det lyder i hvert fald helt usandsynligt, at 11% af hans brugere har slået JS fra :)
Det er såmænd ikke så længe siden (godt et årstid), hvor det var tæt på offentligt selvmord at have JS slået til i IE. På det tidspunkt stod hele din HD åben som en ladeport for alverdens websites, hvis du ikke slog JS fra i IE. Der sidder nok stadig en rest af skræk i mange brugere, hvilket vel kan forklare, hvorfor nogen stadig slår det fra(?) :)
Jeg mente webudviklere generelt set... Jeg er i princippet også en webudvikler, selv om det ikke er i faglig forstand/professionelt :-) Men, ja. Det er nok mere kommende professionelle der besøger w3schools, mere end de eksisterende professionelle (Der allerede burde kende til det indhold, w3schools beskriver).
Ja, det lyder lidt vildt med de 11% Jeg har egentlig også mere tiltro til statistikken på thecounter.com, også fordi statistikken er baseret på 254 millioner unikke(?) besøgende fra en bred gruppe. Men 10 millioner der har slået javascript fra i den gruppe, lyder godt nok af mange 8-|
Jeg tror faktisk, at jeg altid har haft slået JS til. Måske undtaget i enkelte perioder i 90'erne. Jeg vidste ikke, at det var en sikkerhedsrisiko indtil for så kort tid siden? :-/ Men det lyder som en rationel forklaring på at nogle/mange ikke har slået det til.
-- en doctype definition definerer hvordan man skal fortolke html og hvilke gyldige muligheder, som findes ...
-- i bedste fald er det derfor noget vrøvl, hvad du skriver, det svarer til at du stiller spørgsmålstegn til at 2² = 4, og henfører det til din matematikregners måde at fortolke talværdier sikkert er et problem, hvis du har brug for at det skal være 5, for at en beregning skal passe til det du selv tror !-)
Det synes jeg zq ik' er nogen god ide, men tænk lige over det en gang til:
-- dtd betyder DocType Definition, altså er det det definitionEN af, hvad browseren skal gøre med de forskellige elementer ...
-- hvis vi definerer at x³ betyder at der skal være tre og x² at der skal være to multiplikatorer med værdien x, vil det være lidt syndt, at du forbander det langt væk, hvis du kun får det til at passe, hvis det er omvendt ...
-- men det er netop en definition, og så skal man søge andre steder, for at finde forklaringen på den forskel, man erstødt ind i !-)
nej men til til tider har jeg lidt svært ved at se "semantikken" bag/eller tonen i det skrevne ord.(det gælder iøvrigt for alle)
Dog er dette underligt:
tagget <p> må ikke indeholde et <noscript> element men tagget <p> må gerne indeholde <object> elementet. Og tagget <object> må gerne indeholde <noscript> elementet.??
tagget <p> må ikke indeholde et <noscript> element men tagget <p> må gerne indeholde <object> elementet. Og tagget <object> må gerne indeholde <noscript> elementet.??"
Jooo ... det kan jeg da godt være enig i ...... men hvem siger også det?
Så er jeg tilbage... Stadig ingen der har kommenteret <noscript> og søgemaskiner :-/
Jeg overvejer helt, at droppe <noscript> af hensyn til søgemaskinerne. Da jeg som nævnt, udover at validere i javascript, validerer i ASP må jeg tilføje nogle fejlmeddelelser i ASP, så alle brugere bliver korrekt informeret uanset browserindstillinger.
Jeg kan ikke se andre løsninger på problemet. Måske er der andre der kan?
Da ikke alle browsere leverer en header, som du for alvor kan bruge til noget, heller ikke i asp, ville mit klare valg være at lave en simpel reaktion, hvis browserens header indikerede, at den ikke forstod javascript ...
Hvad er det for en header, du nævner, Roenving? Kan du give et eksempel?
Det jeg tænker på er, at hvis javascriptet ikke er slået til må det nødvendigvis kun være ASP-valideringen der virker. Da ASP'en foretager samme validering hver gang der submittes, må jeg vel bare tilføje nogle fejlmeddelelser i ASP; Hvor jeg nu kun har en gældende fejlmeddelelse, i tilfælde af at javascriptet ikke validerer/bliver omgået.
Eller du kunne udløse et script, der sletter serverens HD, når en bruger ikke har slået JS til. For det første er det kanon trendy at lune op under en selvmordsbombe, når man møder en vantro ... for det andet er det næsten som at spille Lotto - bortset fra odds for 'gevindst' nok er endnu dårligere her :)
Det er faktisk ikke så vanskeligt at lave en serverside validering med en udførlig fejlbesked, men jeg finder det nu ikke påkrævet. Du kan vel lave noget à la:
Dim sErr sErr = ""
If ( BETINGELSE_1 ) Then sErr = sErr & vbCrLf & "Kvaj, du har gjort noget forkert." End If
If ( BETINGELSE_2 ) Then sErr = sErr & vbCrLf & "Kvaj, du har gjort noget andet forkert." End If
If ( BETINGELSE_3 ) Then sErr = sErr & vbCrLf & "Kvaj, du har gjort noget tredie forkert." End If
If ( BETINGELSE_4 ) Then sErr = sErr & vbCrLf & "Kvaj, du har gjort noget fjerde forkert." End If
If (sErr<>"") Then ' Der opstod en fejl, der skal handles på. ' Send brugeren tilbage og vis ham strengen sErr Else ' Alt er udfyldt som forventet. ' Do what a man must do ... :) End If
Hehe, at føre Jihad mod en ikke-javascript-brugers harddisk:
If javascript = False Then Response.Write "Nu jag slette din harddisk fordi du ikke bruge javasgript, din vantro hun!" User.Harddrive.Delete Else Response.Write "Det va fint, du bruge javasgript... Men du a stadig en klovn, der ikke kan finde ud af a ufylde en formular korrekt, din analfabet!!!" End If
---
Jeg har allerede en lignende validering, som du beskriver i dit indlæg, ole. Den resultererblot i en unik fejlmeddelelse, og beder brugeren om at prøve igen. Men det kræver nok ikke det store arbejde at gøre den mere brugervenlig.
De 3.000, Roenving nævner, hvor kommer det tal fra?
Det, jeg skrev, samler en streng, der beskriver alle de fejl, brugeren har begået. Meget mere brugervenligt bliver det nok ikke med en serverside validering :)
De 3.000 tror jeg er et tal fra den roenvingske krystalkugle. Jeg tror, det er et lavt tal, valgt for at eksemplificere problematikken på en realistisk måde ... men selve tallet skal du nok ikke hænge dig for meget i ;o)
-- selvfølgelig er 3000 valgt som et ganske tilfældigt greb i luften som et eksempel på, hvor mange super-besøgte sites som google o.l. støder ind i om året, som ikke kan den slags basal javascript !-)
Jeg synes også at det var et nyt tal, og et noget lavere tal end der indikeres rundt omkring :-)
Nå, det er vist blevet lukketid, hvis der ikke er nogen der har mere at indskyde. Konklusionen må blive, at jeg dropper <noscript> helt, og i stedet fortsætter med en kombineret javascript-/ASP-validering som hidtil.
Roenving og Olebole, smid et svar så I kan få points. Jeg har stadig fået nogle brugbare svar fra jer, selv om jeg ikke har fået svar på spørgsmålet omkring Google og <noscript>.
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.