Avatar billede nielsbjerre Nybegynder
15. august 2000 - 16:42 Der 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>\"
Avatar billede mpj Nybegynder
15. august 2000 - 16:47 #1
Nå... du har nok javascript for webdesignere...? fra IDG?
Avatar billede nielsbjerre Nybegynder
15. august 2000 - 19:13 #2
til mpj
Jam du har så fuldstændigt ret, men når det skal bruges i praksis og flere kombineres, så er jeg ved at træt af Netscape :-)
mvh -nb
Avatar billede mpj Nybegynder
15. august 2000 - 20:19 #3
Hehe... jeg sidder selv og roder med deres eksempler...!
Avatar billede helle_fred Nybegynder
16. august 2000 - 09:22 #4
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
Avatar billede olebole Juniormester
17. august 2000 - 03:26 #5
<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 \'&oslash;\' for \'ø\' og ikke \'&aring;\' 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>
Avatar billede kryptokaj Nybegynder
17. august 2000 - 12:02 #6
Ja, okay han virker ikke for kvik!

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.
Avatar billede helle_fred Nybegynder
17. august 2000 - 13:05 #7
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&aelig;ftet er beregnet til at lette arbejdet med at producere og vedligeholde websteder og til at give et smukkere og mere anvendeligt resultat p&aring; l&aelig;serens sk&aelig;rm. Udgangspunktet er, at hvis noget skal g&oslash;res mere end en gang, kan man lige s&aring; godt f&aring; computeren til at g&oslash;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&oslash;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.

vh Helle
Avatar billede olebole Juniormester
17. august 2000 - 17:08 #8
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. \'&oslash;\' 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))
Avatar billede nielsbjerre Nybegynder
17. august 2000 - 20:04 #9
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 ....
Avatar billede nielsbjerre Nybegynder
17. august 2000 - 20:09 #10
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 ???
Avatar billede helle_fred Nybegynder
17. august 2000 - 22:56 #11
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 \"&oslash;\" - 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(\"&oslash;\")</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.

Avatar billede helle_fred Nybegynder
18. august 2000 - 10:57 #12
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?

vh Helle

Avatar billede nielsbjerre Nybegynder
19. august 2000 - 06:48 #13
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 ...
Avatar billede olebole Juniormester
19. august 2000 - 08:34 #14
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:

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>\"

i \'eks7dkpic.js\'...?
Avatar billede helle_fred Nybegynder
19. august 2000 - 11:33 #15
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 \'&oslash;\' for \'ø\' og ikke \'&aring;\' 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? 
Avatar billede olebole Juniormester
19. august 2000 - 17:22 #16
Overhovedet ikke...det er helt andre ting!  ;o)

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 \'&oslash;\' 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)

/Vh
Avatar billede helle_fred Nybegynder
19. august 2000 - 23:28 #17
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.

Men her opstår et interessant problem:

Skriver man f.eks:

<a href=\"#her\\40er\\40et\\40langt\\40ankernavn\">klik</a>
.....
<a name=\"her\\40er\\40et\\40langt\\40ankernavn\">Ankerplads</a>
<script>document.write(document.anchors[0].name)</script>

- 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:

<a href=\"#her&nbsp;er&nbsp;et&nbsp;langt&nbsp;ankernavn\">klik</a>

<a name=\"her&nbsp;er&nbsp;et&nbsp;langt&nbsp;ankernavn\">Ankerplads</a>
<script>document.write(document.anchors[0].name)</script>

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.

Avatar billede olebole Juniormester
20. august 2000 - 01:40 #18
Og så er alt jo, som det skal være  ;o)
Det, du skriver, er HTML.
Det, vi taler om, er JavaScript.
Avatar billede helle_fred Nybegynder
20. august 2000 - 12:10 #19
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.
Avatar billede olebole Juniormester
20. august 2000 - 13:21 #20
Se JavaScript dokumentationen:
    http://developer.netscape.com/docs/manuals/js/client/jsguide/ident.htm#1011693
Den metode til at skrive specialtegn (tegn, der ikke er indeholdt i det internationale tegnsæt), jeg taler om, er angivet i tabellen ved \'\\XXX\' - men som du ser, er der flere.

Følger du standarden, maximerer du din kodes X-browser kompatibilitet.
\'&nbsp;\' 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&nbsp;hallo\'); skriver ikke \'halli hallo\' - men det er der en hel del andre kombinationer, der gør. Herunder \'\\40\'.
Avatar billede helle_fred Nybegynder
21. august 2000 - 08:55 #21
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&oslash;rrelse\">Tilpasning af vinduesst&oslash;rrelse</A>

og den udskrives i et script:

for(i=0; i < document.anchors.length; i++){
  henvisning = document.anchors[i].name
  skriv(henvisning.link(\"#\" + henvisning))
  skriv(\"<BR>\")
}

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?

Avatar billede olebole Juniormester
21. august 2000 - 10:41 #22
henvisning = document.anchors[i].name

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 \'&oslash;\' med en \'lovlig\' erstatning - f.eks: \'\\370\'.
Det står i dokumentationen...højt og tydeligt!

Du kan udskifte dem i en \'while\' løkke:

while (henvisning.indexOf(\'&oslash;\') != -1) {
    henvisning = henvisning.substring(0,henvisning.indexOf(\'&oslash;\')) + \"\\370\" + henvisning.substring(henvisning.indexOf(\'&oslash;\')+1,henvisning.length);
}

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)
Avatar billede helle_fred Nybegynder
21. august 2000 - 11:51 #23
Jeg kan ikke få dit script til at fungere - hvis jeg derimod erstatter din betingelse, (henvisning.indexOf(\'&oslash;\') 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.
Avatar billede helle_fred Nybegynder
21. august 2000 - 13:08 #24
...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.
Avatar billede olebole Juniormester
21. august 2000 - 20:01 #25
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 = \"&oslash;l\"
    alert(bla.indexOf(\'&oslash;\'));
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!\'

Enough is enough!  ;o)
Avatar billede helle_fred Nybegynder
22. august 2000 - 09:06 #26
Ole: du misforstår 100%. Jeg er klar over at man ikke får et rigtigt resultat ud af:
alert(bla.indexOf(\'&oslash;\'));
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 jeg er enig: lad os stoppe her!

Avatar billede olebole Juniormester
22. august 2000 - 21:32 #27
\"...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 \'&oslash;\'! 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!!!
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