MS-Office-Forum

MS-Office-Forum (https://www.ms-office-forum.net/forum/index.php)
-   Web-Programmierung (https://www.ms-office-forum.net/forum/forumdisplay.php?f=34)
-   -   Baumstruktur_li_nicht_kompatibel_zu_IE (https://www.ms-office-forum.net/forum/showthread.php?t=311341)

Huan90 07.07.2014 11:19

Baumstruktur_li_nicht_kompatibel_zu_IE
 
Hallo liebe MS-Forum Gemeinde,

ich habe für unser "Intranet" eine Website bauen sollen, auf der ein Verzeichnis dynamisch als Menü dargestellt werden soll. Befinden sich in einem der Unterordner PDF-Dateien, sollen diese auf Klick des entsprechenden Verzeichnisses (im Menü) angezeigt werden.

Folgender code wurde im FireFox getestet und funktioniert hier:
Code:

<html>
        <head>
        <link rel="stylesheet" type="text/css" href="mein.css"/>
        <title>Gefährdungsbeurteilung</title>
       
        <?php
                function scandir_rec($dir)
                {
                        $files = scandir($dir);
                       
                        $d = $f = array();
                        foreach($files as $file) if($file != '.' && $file != '..')
                                if(!is_file($dir.'/'.$file))
                                        $d[htmlentities($file, 0, "ISO8859-1")] = scandir_rec($dir.'/'.$file); // Wenn Unterordner dann erst nochmal aufrufen
                                else
                                {
                                        $file = explode('.', $file);
                                        if(array_pop($file) == 'pdf')
                                                $f[htmlentities(implode('.', $file), 0, "ISO8859-1")] = htmlentities(implode('.', $file), 0, "ISO8859-1");        // Wenn Datei dann in Array schreiben
                                }
                       
                        return array_merge($d, $f);
                }
               
                $tree = scandir_rec("pdfs");
        ?>
        <script language="JavaScript">
                var tree = <?php echo json_encode($tree); ?>; //Namen/Pfad-Array aus php an JS "var tree" übergeben
               
                function build_tree(tree, path = "")
                {
                        html = "<ul>";
                        for(dir in tree)
                        {
                                if(typeof tree[dir] !== "string") //Wenn Array statt String
                                {
                                        files = {};
                                        for(file in tree[dir])
                                                if(typeof tree[dir][file] === "string")
                                                        files[tree[dir][file]] = path+"/"+dir+"/"+file; // Wenn String, hinten anfügen
                                                       
                                        html += "<li>";
                                        html += "<input type=\"button\" value=\"-\" onclick=\"toggle(this);\"/>";
                                        html += "<a href=\"javascript: build_documents("+JSON.stringify(files).replace(/"/g, '&quot;')+");\">"+dir+"</a>";
                                        html += build_tree(tree[dir], path+"/"+dir);
                                        html += "</li>";
                                }
                        }
                        html += "</ul>";
                        if(html == "<ul></ul>")
                                return "";
                        return html;
                }
               
                function build_documents(files)
                {
                        html = "";
                        for(idx in files)
                        {
                                html += "<input type=\"button\" class=\"doc\" onclick=\"location.href = 'pdfs"+files[idx]+".pdf';\" value=\""+idx+"\" />";
                        }
                        document.getElementById("documents").innerHTML = html;
                }
               
                function toggle(obj) //Wenn Vater = "ul" (Liste) ausklappen/einklappen
                {
                        ul = obj.parentNode.getElementsByTagName('ul')[0];
                        if(ul.style.display=='none')
                        {
                                obj.value = "-";
                                ul.style.display ="";
                        }
                        else
                        {
                                obj.value = "+";
                                ul.style.display = "none";
                        }
                }
               
                function mailpopup()
                {
                        //alert("YOU");
                        pop = window.open("mailpopup.php", "E-Mail Popup", "width=580, height=100");
                        pop.focus;
                       
                }
        </script>
        </head>
       
        <body onload="document.getElementById('tree').innerHTML = build_tree(tree);">
       
        <div class="header">
        <span class="unvis"></span><span class="headertext">Gefährdungsbeurteilung... ... ... </span>
       
        <input type="button" class="mailbutt" onclick="mailpopup()" value="E-MAIL VERSENDEN">
        <img src="Logo.bmp" align="right" alt="Logo"></img>
        </div>
        <div id="tree"></div>
        <div id="documents">
        </div>
       
        </body>
</html>

Leider bin ich nun dazu gezwungen den InternetExplorer zu nutzen. Dieser zeigt mir das Menü nicht an.

Der IE-Script-Debugger zeigt mir folgende Zeile an:
Code:

<body onload="document.getElementById('tree').innerHTML = build_tree(tree);">
Und sagt mir, "objekt erwartet"....

Kann mir jmd. sagen, was den IE stört und ggf. eine Alternative vorschlagen?
Es führt wie gesagt leider kein Weg um den InternetExplorer herum....

Vielen Dank im Voraus,
LG Huan90

p.s. Als Alternative könnte ich auch einen Rat vertragen, wie ich unsere EDV-Abteilung dazu bringe ihre Software-policy dahingehend zu ändern, dass verteufelte MS-Software nicht mehr zum Einsatz kommt sondern, zumindest als Browser, einer von einem Hersteller, der sich an Internetnormen hällt, anstatt seine eigenen zu definieren... *cry*


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:06 Uhr.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.