Avatar billede cheetahrian Nybegynder
20. februar 2007 - 20:52 Der er 8 kommentarer og
1 løsning

Dynamisk liste med pdf-filer

Jeg har lavet et lille script der laver en liste over nogle filer som tastes ind i et array. Scriptet virker som det skal når man bruger Firefox, men bruger man IExplorer melder den fejl.
Koden ser nogenlunde således ud:
<html>
  <head>
    function createKursusListe()
    {
        pdfListe = new Array('PDF-fil1',
                'PDF-fil2',
                            osv..
                );
       
        var txt = '';
        for(x = 0; x < pdfListe.length; x++)
        {
            txt +='<tr><td class="bodytext" width="25" align="Center"><a href="'+pdfListe[x]+'.pdf'+'" onMouseOut="MM_swapImgRestore()"  onMouseOver="MM_swapImage("button1","","../../../images/Fireworks/button1/button1_f2.gif",1);MM_displayStatusMsg("'+pdfListe[x]+'");return document.MM_returnValue" target="_parent" > <img name="button1" src="../../../images/Fireworks/button1/button1.gif" width="16" height="16" border="0" alt="'+pdfListe[x]+'"></a></td><td class="bodytext">'+pdfListe[x]+'</td></tr>';
        }
        document.getElementById("pdfTable").innerHTML=txt;
    }
  </head>
  <body>
    <table id="pdfTable" border="0" cellspacing="0" cellpadding="2" width="100%">
    </table>
  </body>
</html>

Fejlmeddelelsen fra IExplorer lyder:
Ukendt kørselsfejl
"document.getElementById("pdfTable").innerHTML=txt;"
Kode 0.
Avatar billede cheetahrian Nybegynder
20. februar 2007 - 21:02 #1
Glemte lige...
efter <table> er afsluttet kalder jeg createKursusListe således

<script type="text/javascript">
  createKursusListe();
</script>
Avatar billede mm12010 Nybegynder
20. februar 2007 - 21:39 #2
<table id="pdfTable" border="0" cellspacing="0" cellpadding="2" width="100%">
<script type="text/javascript">
    pdfListe = new Array('PDF-fil1','PDF-fil2');
    for(x=0;x<pdfListe.length;x++) document.write('<tr><td class="bodytext" width="25" align="center"><a href="'+pdfListe[x]+'.pdf'+'" onMouseOut="MM_swapImgRestore()"  onMouseOver="MM_swapImage("button1","","../../../images/Fireworks/button1/button1_f2.gif",1);MM_displayStatusMsg("'+pdfListe[x]+'");return document.MM_returnValue" target="_parent" > <img name="button1" src="../../../images/Fireworks/button1/button1.gif" width="16" height="16" border="0" alt="'+pdfListe[x]+'"></a></td><td class="bodytext">'+pdfListe[x]+'</td></tr>');
</script>
    </table>
Avatar billede mm12010 Nybegynder
20. februar 2007 - 21:40 #3
... det ligner nu mere en server-side opgave at skrive en sådan liste ...
Avatar billede cheetahrian Nybegynder
20. februar 2007 - 23:14 #4
Thx det var lige det der skulle til..

kan du gi nogen forklaring på hvorfor det ikke virkede i IExplorer, når det kørte fint i Firefox?
Avatar billede verakso Nybegynder
20. februar 2007 - 23:17 #5
Nysgerrig, hvilken version af IE bruger du?
FF er sådan set den der korrekt fortolker JavaScript, så hvis der ikke står noget i fejlkonsollen i FF, så vil jeg gætte på at du tester med IE7
Avatar billede olebole Juniormester
21. februar 2007 - 15:26 #6
<ole>

Der er yderst minimal forskel på fortolkningen af JavaScript i IE ig FF. Ældre browser-versioner understøtter naturligvis ikke nyeste JavaScript version, men derudover er der ikke synderlige forskelle i IE og FF's JavaScript-understøttelse. Dog skal man lige være opmærksom på, at IE synes at understøtte en del mere, men det skyldes, der er tale om JScript  ;o)

Årsagen til fejl i scriptet her er såmænd ligetil ... der er rod i escapes:
    document.write("<tr><td class=\"bodytext\" width=\"25\" align=\"center\"><a href=\""+pdfListe[x]+".pdf\" onMouseOut=\"MM_swapImgRestore()\"  onMouseOver=\"MM_swapImage('button1','','../../../images/Fireworks/button1/button1_f2.gif',1);MM_displayStatusMsg('"+pdfListe[x]+"');return document.MM_returnValue\" target=\"_parent\"> <img name=\"button1\" src=\"../../../images/Fireworks/button1/button1.gif\" width=\"16\" height=\"16\" border=\"0\" alt=\""+pdfListe[x]+"\"></a></td><td class=\"bodytext\">"+pdfListe[x]+"</td></tr>");

/mvh
</bole>
Avatar billede olebole Juniormester
21. februar 2007 - 15:28 #7
PS: og det skal lige siges, at FF (helt som forventet) ikke validerer, hvad den skriver ind i DOM'en - og dermed tillader sig selv at skrive invalid kode  :oP
Avatar billede cheetahrian Nybegynder
21. februar 2007 - 20:08 #8
Jeg har prøvet med både IE6 og IE7, samme fejl i begge.. og jeg har også prøvet at benytte mig af /escapes, men det hjalp ikke i IE..
Avatar billede verakso Nybegynder
22. februar 2007 - 20:25 #9
Det har du fuldstændigt ret i olebole, men som du selv påpeger, så er der dog stadigt forkskel i hvordan IE og FF fortolker JavaScript.
I IE kunne man godt referere til et objekt og dets egenskaber direkte, eks. document.form.pdfTable - den går ikke i FF.
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