Einzelnen Beitrag anzeigen
Alt 07.07.2014, 11:19   #1
Huan90
Neuer Benutzer
Neuer Benutzer
Weinen 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*

Geändert von Huan90 (07.07.2014 um 11:44 Uhr).
Huan90 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten