15. august 2000 - 16:42Der er
26 kommentarer og 1 løsning
Auto-titel og sidefod
Autotitel og Sidefod fejl i Netscape Jeg vil gerne lave automatisk Sidehoved, titel og sidefod med javascript. Følgende virker udmærket i IE men ikke i NetScape ved 1ste indlæsning men ved reload virker Netscapen endelig ... Er det et rækkefølge problem ??? Har nedenfor prøvet at klippe fra en html med header og body samt eksterne js-fil:
------ i header ----- <head> <title>Omkring website - Hvorfor starte ?</title> ... diverse meta tages ... <script language=\"JavaScript1.2\" SRC=\"../css/eks7dkpic.js\"> </script> </head>
---- i body ---- <script language=\"JavaScript1.2\"> document.write(rubrik) </script>
------ i eks7dkpic.js: var sidehoved = \"<P><IMG SRC=\'../images/logo_070.png\' hspace=\'10\'> \" + \"<A HREF=\'../index.html\'>Til forsiden</A> \" + \"| <A HREF=\'java script:history.back()\'>Tilbage</A></P>\"
var sidefod = \"<HR><P>Opdateret af Niels Bjerre: \" + document.lastModified + \" | <A HREF=\'mailto:swb@get2net.dk\'>E-mail</A>\" + \"| <A HREF=\'#top\'>Op</A></P>\"
window.onresize = new Function(\"window.location.reload()\") var rubrik = \"<font size=\'5\'>\" + document.title + \"</font>\"
På forfatterens webside kan man se eksemplet (home3.inet.tele.dk/storm/javascript/#Sidehoved og sidefod) - og så vidt jeg kan se fungerer eksemplet ens i Netscape og IE
<ole> nielsbjerre >> Det er kun, når du tester lokalt, fejlen opstår - prøv at uploade, så forsvinder den ;o)
Iøvrigt er det lidt ynkeligt at \'webmasteren\' på et website, der bryster sig af at være \'Det intelligente websted\' og omhandler \'JavaScript for webmastere\' ikke kan finde ud af at skrive de rigtige tegn! Han bruger ikke \'ø\' for \'ø\' og ikke \'å\' for \'å\', hvilket - i alt fald på Mac - giver alm. og omvendte spørgsmålstegn i stedet (se hans links i øverste, højre hjørne) :o( Ligeledes skriver han mellemrum i alle sine ankre, så man ikke kan bookmarke siden - eller gøre som helle_fred har gjort ovenfor, nemlig kopieret URL\'en fra location-linien. Prøv at kopier URL\'en ovenfor og sæt den ind i location-linien...nej vel? Børnelærdom, at URL\'er ikke må indeholde mellemrum! :o(( /Vh </bole>
Hans kildekode lgienr noget jeg kunne have lavet, og jeg bruge MEGET sjældent javascript, men enhver ved swu da også at man ikke skriver javascript/#anker der er squ da javascript#anker
IDG forlægger er åbenbart ikke computereksperten, det kunne være man skulle blive fag-forfatter, det ser ud til at være let.
Ja, ja - det er altså ikke forfatteren, der skrev den link, men mig - og ja, det var ynkeligt, ynkeligt; men jeg fik det ikke tjekket - det sker vist for os alle engang imellem. Og fald så lige lidt på plads.
Her er et lille snit fra sidens kildekode:
<P>Samtlige eksempler i hæftet er beregnet til at lette arbejdet med at producere og vedligeholde websteder og til at give et smukkere og mere anvendeligt resultat på læserens skærm. Udgangspunktet er, at hvis noget skal gøres mere end en gang, kan man lige så godt få computeren til at gøre det anden, tredje, fjerde og femte gang.</P>
som man ser bruges der ikke æ, ø og å - det er vist et noget specielt mac-problem olebole er ude i her. I kildekoden finder du ingen æ, ø og å\'er. Linksene i højre hjørne er en indholdsfortegelse, der genereres ud fra anker-tekster på siden. Her er et eksempel på et anker fra kilden:
<A NAME=\"Mere kontrol med vinduesstørrelse\">
- som du ser uden ø\'er. Men din iagttagelse er interessant.
Det er rigtigt, at man normalt ikke bruger mellemrum i ankre - men i siden her, som altså indeholder et script, der genererer en lokal indholdsfortegnelse på baggrund af ankrene, har det en funktion. Ankerteksterne optræder nemlig direkte i denne indholdsfortegnelse.
Kryptokaj: det er vist dig, der ikke ved hvordan man skriver adresser! \"javascript/#anker\" er underforstået (af browseren også!) \"javascript/index.htm#anker\".
Personligt mener jeg (natuligvis, for jeg har været redaktør på hæftet) at der er tale om en suveræn samling scripts, og at hæftet er interessant læsning for folk med interesse for JavaScripts. Jeg mener også, at det ligger på et rimelig højt niveau.
Nu er der vel ikke tale om et hæfte for \"...folk med interesse for JavaScripts\", men for webmastere - hvis man skal tro titlen (og det synes tydeligt, at det skal man ikke!). Iøvrigt omtaler jeg ikke hæftet, men forfatterens side på nettet, som indeholder et par ganske udmærkede eksempler på, hvordan man IKKE bruger JavaScript.
Det er netop den dynamisk udskrevne \'menu\', jeg henviser til, når jeg omtaler de manglende entities! Man kan nemlig ikke bruge f.eks. \'ø\' istedet for \'ø\' i JavaScript, men skal bruge den escapede oktaltal-værdi til tallet i tegnets ANSII kode! Derfor skal man i et script, der genererer tekst til udskrift med JavaScript, altid først udskifte disse entities med føromtalte escapede talværdi (for \'ø\' er det \'\\370\'). Da der er tale om overtrædelse af standarden, er der forhåbentlig ikke tale om et specielt Mac-problem. Havde der været det, havde det jo netop været på sin plads at gøre de webmastere - hæftet skulle være henvendt til - opmærksom på, at eksemplet ikke virkede på Mac...det er vel netop en webmasters fornemmeste opgave, at gøre de sider, han/hun administrerer så bredt kompatible, som muligt.
helle_fred, det er ukorrekt, at \"...man normalt ikke bruger mellemrum i ankre\"! Det gør man ALDRIG! Den eneste funktion, det kan have at gøre det her, må være at vise læseren, hvordan dynamisk udskrift af en menu IKKE skal gøres. En URL MÅ ikke indeholde mellemrum (ifølge standarden) - og hvis man bookmarker siden, fremstår dette anker som en del af URL\'en! Resultatet er, at siden ikke kan kaldes via bookmarket...vel ikke ønskeligt for nogen webmaster...eller...?!?
Personligt mener jeg, at hvis man gerne vil give den som \"Den Gamle Redacteur\" - eller for den sags skyld, som forfatter - på undervisnings-litteratur for fagfolk, må man selv have et videnniveau, der matcher det, der forsøges undervist på. Om samlingen er \"suveræn\" og på \"et rimeligt højt niveau\" må være et synspunkt, der mere beskriver dit eget niveau end script\'enes.
/Vh
PS: Et personligt råd: Køb en pakke ligtorne-plaster! ;o))
Svar til Helle: Jeg er ikke tvivl om at det originale fungerer som oprindeligt - men jeg vil jo gerne lidt mere og her er der jo tale om nogle små udvidelser - kombinationer ....
Til olebole Tak for svaret om udelukkende lokal fejl - det lettede og ser ud til at stemme for næsten alle siders vedkommende (der er en enkelt tilbage der stammer fra en js variant så den skal nok checkes endnu engang)... leger lidt med en familiesite på http://www.netby.net/Oest/Nordstjernevej/sif hvis nogen er interesseret ... Men selvom point\'ene er uddelt kunne jeg stadig godt li\' at vide hvorfor fejlen opstår ???
Ole: jeg har ingen problemer med ligtorne - men faktisk kunne jeg godt tænke mig at forstå, hvad det er for et problem du har i din mac-browser. Ikke pga gamle redacteur-holdninger; men simpelthen af nysgerrighed.
Til sagen: jeg ville mene, at der i scriptet anvendes \"ø\" - og de andre - i tekststenge, og at det gøres korrekt. Man kan så vidt jeg ved ikke få et ø frem på en mac ved at skrive
<script>document.write(\"\\370\")</script>
Hvorimod
<script>document.write(\"ø\")</script>
jo virker - på en pc i hvert fald.
Med hensyn til, hvad der er lovligt name i et anker: hentyder du til en særlig regel om, at man ikke MÅ bruge mellemrum i navnestrengen (der findes mig bekendt ikke sådan en regel nogen steder) - eller taler du om, hvad man plejer at gøre? Det er korrekt at ankre i dette script bruges anderledes end man plejer at gøre det - men det behøver vel ikke at være dårligt.
nielsbjerre: Jeg kan ikke få øje på problemet i Netscape - når jeg kører dit eksempel virker det udmærket (du udskriver ikke sidehoved og sidefod; men det er en detalje). Din kode fungerer hos mig i begge browsere (også når jeg tester lokalt), og jeg behøver ikke at reloade.
Har du på dit site eksempler på sider, hvor det driller? Hvordan fungerer det ikke i Netscape - hvilke symptomer får du?
til Helle det er jo delvist løst. Den opståede ved i alle tilfælde \'undefined\' i stedet for angivelse af den ønskede tekst óg da det forsvinder efter genindlæsning regner jeg med rækkefølgefejl ... Den eneste tilbageværende online fejl ses ved 1ste indlæsning af forside på ovennævnte url ...
Nej, det er ikke indlæsnings rækkefølgen. Til gengæld bryder JavaScript sig ikke om at skrive \'script\', men vil gerne have det escaped, sådan: \'\\script\'. Måske du skulle prøve at skrive sådan her:
niels: Jeg har det \"problem\", at min Netscape viser din side korrekt. Men det kan være specifikt for versionerne, sådan noget. Hvilken version bruger du? Hvis Oles løsningsforlag med backslashen virker, gir du så lige et prej?
ole: den mac jeg var forbi i går havde ingen \"omvendte spørgsmåltegn\" nogen steder, heller ikke i menuen over underrubrikker i højre hjørne. Jeg undrer mig stadig meget over din iagttagelsen:
\"Han bruger ikke \'ø\' for \'ø\' og ikke \'å\' for \'å\', hvilket - i alt fald på Mac - giver alm. og omvendte spørgsmålstegn i stedet (se hans links i øverste, højre hjørne)\"
Hælder du bare vand ud ad ørerne, eller er det rigtigt? Gider du eventuelt give mig et skærmshot og informationer om din browser? - eller er det sådan noget, der får smædeskribenten op i dig?
Prøv NS - at IE ikke gør det, skyldes at den er så forbandet fejltollerant, så man næsten kan skrive, hvad som helst. I JavaScript bør man ikke bruge \'ø\' eller \'ø\', men skal bruge \'\\370\'...det er en ældgammel \'nyhed\'.
Til en af dine kommentarer ovenfor: Du har ret i at der ikke står nogen steder, der ikke må være mellemrum i ankre...heller i noget, jeg har skrevet. Det der står er, at der ikke må være mellemrum i en URL - og så er det vel ikke så smart at bruge det i et anker. Klikker du på et menupunkt, der leder dig hen til et anker, kan du nemlig godt bookmarke siden, men ikke bruge bookmarket til noget, da det så indeholder mellemrum. At lære en webmaster at lave en menu, der gør, at folk ikke kan bookmarke den side, han/hun administrerer finder jeg ikke \'oplagt\' - og er et projekt, jeg ikke ville kaste mig ud i. Mellemrum i ankre er ikke \'ulovligt\' - blot ubrugeligt. ;o)
Siden kan vel godt bookmarkes, blot kommer man ikke ned til ankeret - sådan virker det i hvert fald på en pc.
Om man som webmaster vil bruge et script som dette afhænger vel meget af sidens karakter - om det er vigtigt at kunne bookmarke til ankrene eller ej. Men du har da en pointe...
Især fordi det kan lade sig gøre at skrive scriptet om, så der både kan bookmarkes til ankrene og så der alligevel kan udskrives en liste over ankrene.
- så får man et anker, som kan bookmarkes ok; men som ikke udskrives korrekt (\"her\\40er\\40et\\40langt\\40ankernavn\"). Skriver man derimod scriptet sådan:
får man både en god udskrivning(\"her er et langt ankernavn\") og mulighed for at bookmarke (med forbeholdet: pc med IE). Og det viser vel, at \"escapede oktaltal\" er uheldige i denne sammenhæng.
Næ, det er egentlig også hvad jeg ville have forventet. Mine bestæbelser går mere i retning af at forstå, hvad dine indvendiger mod koden på den famøse webside er - hvor du mener forfatteren burde bruge Ascii escape-koder i stedet for html-koderne for æ,ø og å for at få den lokale indholdsfortegnelse til at give mærkelige tegne på din mac-skærm. Jeg kan se, at han måske skriver \"lørdag\" go \"søndag\" med de forkerte tegn til sidefoden; men akrene er skrevet i html, og så vidt jeg kan se bruger han den samme form, som i min kode nr to ovenfor.
Følger du standarden, maximerer du din kodes X-browser kompatibilitet. \' \' i JavaScript virker i nogle tilfælde i IE, men ikke i NS. Det er fordi IE desværre accepterer så pokkers mange fejl og gætter sig frem. alert(\'halli hallo\'); skriver ikke \'halli hallo\' - men det er der en hel del andre kombinationer, der gør. Herunder \'\\40\'.
Jeg har forstået, at man bruger ascii-koderne i JavaScript og ikke i HTML. Det jeg ikke forstår er stadig, hvorfor links i højre side af den webside ser ud som den gør på din skræm. Med mac og Netscape er der omvendte spørgsmålstegn og andre mærkværdigheder i denne oversigt, fortæller du.
Linksene er genereret af et JavaScript, men teksterne stammer fra ankrenes names. Et anker på websiden har for eksempel koden:
<A NAME=\"Tilpasning af vinduesstørrelse\">Tilpasning af vinduesstørrelse</A>
Hvor er det så, at det går galt på din skærm, efter din mening? Så vidt jeg kan se er formen helt parallel til kode to ovenfor - ankrets name angives i en html-sætning, hvorfor der bruges de sædvanlige koder for specialtegn i html. Hvad ville du gøre anderledes?
Der sætter du en variabel lig med en streng, der indeholder entities, der ikke kan bruges - efter standarden...hvilket i hvert fald generer på Mac/NS. Du skal først udskifte dine \'ø\' med en \'lovlig\' erstatning - f.eks: \'\\370\'. Det står i dokumentationen...højt og tydeligt!
Så kan \'henvisning\' skrives sikkert ud med JavaScript. Det bliver hurtigt en større omgang (bare med æ, ø og å), så derfor er den metode ikke rigtig fed, hvis man vil kode X-browser og X-platform - og det vil de fleste webmastere vel ;o)
Jeg kan ikke få dit script til at fungere - hvis jeg derimod erstatter din betingelse, (henvisning.indexOf(\'ø\') med (henvisning.indexOf(\'\\370\') - så finder jeg ø\'et. Hvorefter scriptet går i uendelig løkke - men skidt nu med det. Så vidt jeg kan se er den name-variabel, når den hentes i scriptet, gjort klar til JavaScript på den måde, at html-koderne er erstattet med ascii-koder.
...ups: løkken var det mig, der fik lavet. Men dit script: hos mig bliver det slet ikke udført(der er tilsyneladenden ingen html-kode for ø tilbage i strengen, når den bruges i scriptet.
Nu husker du at prøve i NS, ikke? Vi er jo blevet enige om, at IE ikke overholder standarden - og den er du vel ikke længere i tvivl om. Skriver du: var bla = \"øl\" alert(bla.indexOf(\'ø\')); skulle du meget gerne få returneret \'0\' i din alert - i NS.
Om du får den samme fejl under Windows eller ej, så overholder koden ikke standarden og er ikke X-browser og X-platform - og min pointe er: \'Det ikke er fedt for nogen webmaster!\'
Ole: du misforstår 100%. Jeg er klar over at man ikke får et rigtigt resultat ud af: alert(bla.indexOf(\'ø\')); hverken i IE, Netscape i Windows eller Mac.
Men der sker noget andet, når du skriver et ankernavn ud i et script. På min platform - både Netscape og IE foregår det på den måde, at du angiver ankernavnet med de sædvanlige HTML-koder - og at disse omsættes til escapekoderne i scriptfortolkeren, og når de printes ud i et script indeholder de derfor ikke længere html-koderne. Men hos dig, mac og Netscape, er det altså anderledes?
Det er da en meget subtil detalje, som jeg ved næstgivne lejlighed vil undersøge. Både fordi fænomnet er interessant; men selvfølgelig også fordi jeg vil se om det virkelig kan passe.
\"...men selvfølgelig også fordi jeg vil se om det virkelig kan passe.\" Hvis dit udgangspunkt hele tiden har været, at jeg taler tågesnak eller er fyldt med løgn, kan jeg bedre forstå, det har trukket så langt ud!
Hvorfor overholder du ikke bare standarden, der - ved højtlæsning for pygmæer - fortæller dig, hvordan reglerne er?
Ligegyldigt, hvorfra du henter dine variabler, må de ikke indeholde \'ø\'! Det er ikke en subtil detalje, men en del af JavaScript-standarden. Så er det muligt, at MS-software ikke overholder denne standard, men det gør andre - og der får du problemer. Overholder du standarden får du ikke problemer på nogen platforms/browser kombination.
Simple as that!!!
Synes godt om
Ny brugerNybegynder
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.