Avatar billede ojunker Nybegynder
31. december 2003 - 11:58 Der er 9 kommentarer og
1 løsning

Netscape 7.1, Mozilla 1.5 og JavaScript Split-metode

Jeg har netop installeret Mozilla 1.5, men må desværre konstatere, at den heller ikke ligesom Netscape 7.1 tilsyneladende kan håndtere JavaScript's Split-metode korrekt.
Er det en bug?
Et JavaScript, jeg har kørende på en webside, benytter bl.a. nævnte metode, som i et par år har fungeret upåklageligt i Netscape til og med vers. 7.0x samt tillige MSExplorer.
En tekststreng, som gerne skulle opdeles i 5 delstrenge, bliver tilsyneladende håndteret således:
delstreng[0] - korrekt
delstreng[1] - korrekt
delstreng[2] - indeholder resten af tekststrengen inklusive separatorer.
Det sidste var jo ikke meningen.
Jeg har ikke set problemet nævnt andre steder (søgt i Google m.fl. søgemaskiner).
Har nogen stødt på nævnte problem og eventuelt kendskab til en løsning?
Avatar billede erikjacobsen Ekspert
31. december 2003 - 12:25 #1
Har du en stump kode?
Avatar billede ojunker Nybegynder
31. december 2003 - 12:39 #2
Koden benyttes til at lave et Sitemap på omtalte webside.
Jeg har prøvet et utal af variationer af koden, uden resultat.
Men her er den:

<table cellpadding=8 width=100%>
<caption>Sitemap/Indholdsfortegnelse</caption>
<tr valign=top>

<script language="javascript1.2">

function skriv(tekst){
document.write(tekst)
}

for(i in rubrik){
    skriv("<td valign=top><span style=\"font-size: 12px; font-weight:bold\">")
    skriv(rubrik[i])
    skriv("</span><br>")
        for(m in indhold){
        nummer = parseint(indhold[m])
        opdelindhold = indhold[m].split("|")
            if(nummer == i){
            skriv("<base target=\"" + opdelindhold[3] + "\">")
            skriv(opdelindhold[1].link(mappe[i] + opdelindhold[2]))
            skriv("<br>")
            }
        }
    skriv("</td>")
    if(i==3){
    skriv("</tr><tr>")
    }
    if(i==7){
    skriv("</tr><tr>")
    }
}
</script>
</tr></table>

Siden kan ses på http://edr.dk - vælg menupunkt: Sitemap
Avatar billede ojunker Nybegynder
31. december 2003 - 12:44 #3
Lige en tilføjelse:

Sitemap bliver lavet uden problemer, men links i sitemap bliver forkerte, fordi opdelindhold[2] i de nævnte browserversioner indeholder for meget tekst.
Avatar billede erikjacobsen Ekspert
31. december 2003 - 13:01 #4
Det er vel ikke bare fordi du staver forkert
  nummer = parseint(indhold[m])
skal være
  nummer = parseInt(indhold[m])
Avatar billede ojunker Nybegynder
31. december 2003 - 13:07 #5
Nej, det er det ikke.

Jeg kan se, at da jeg kopierede teksten, fik jeg beklageligvis ændret alt til lower case.

Koden ville jo så heller ikke have fungeret i de andre browserversioner.
Avatar billede erikjacobsen Ekspert
31. december 2003 - 13:31 #6
Ok, men jeg stopper bare ved første fejl jeg ser.
Men browsere har lidt forskellige måder at håndtere strenge på.
Du skal lave en ægte kopi af din opdelindhold[2], fx

  a=" "+ opdelindhold[2];
  a=a.substr(1);
  skriv(opdelindhold[1].link(mappe[i] +a))

Det kan måske laves lidt smartere, men det ser ud til at virke.

Erik Jacobsen / OZ6KS
Avatar billede erikjacobsen Ekspert
31. december 2003 - 13:51 #7
Og det ville nok også have virket, hvis der rent faktisk havde stået
noget i mappe[i] ;)  Du kan også overveje at skrive linket ud selv - og
ikke bruge .link, dvs. noget i retning af (utestet)

  skriv('<a href="'+mappe[i]+opdelindhold[2]+'" target="'+opdelindhold[3]+'">'+opdelindhold[1]+'</a>');

og dermed også spare din line med "<base....".
Avatar billede ojunker Nybegynder
31. december 2003 - 14:23 #8
Hej Erik

Jeg har prøvet med at lave en kopi af opdelindhold[2] som ovenfor, og nu virker det, som det skal, i såvel NS 7.1 som Moz 1.5. Den idé var jeg altså ikke kommet på, må jeg tilstå.

Det script, jeg benytter, har jeg oprindeligt brugt i anden forbindelse. Derfor er mappe-arrayet i den her sammenhæng tomt.

Jeg havde tidligere overvejet, om det kunne ændre noget, at skrive linket selv, således at jeg kunne undgå den noget utraditionelle <base target>-konstruktion (som er lavet i en fart), og i stedet placere en "normal" target-attribut i forlængelse af linket, som du beskriver, men jeg er aldrig nået dertil.

Underligt nok virker opdelindhold[3] uden at jeg har placeret indholdet herfra i en variabel. Der er i hvert ikke problemer med at finde frem til ønsket target, som er enten "Main" eller "_blank".

Tak for hjælpen. Det var morsomt, at det lige var dig, der skulle falde over det her spørgsmål. Kan du have et godt nytår.

Ole Junker / OZ8ND
Avatar billede erikjacobsen Ekspert
31. december 2003 - 14:52 #9
Det du undrer dig over har noget at gøre med at opdelindhold[3] rent
faktisk bliver sat sammen med noget, dermed laves en ægte kopi.

Og ja, det ser ud til at virke på siden
Avatar billede nstenberg Nybegynder
21. januar 2004 - 07:44 #10
Hvis man mistænker at der er tale om en bug, kan man altid tage et kig på Mozillas Bugzilla... http://bugzilla.mozilla.org
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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