Sowas liegt oft an den Sicherheitseinstellungen des IE. Musst du da mal ein wenig rumfrickeln
Guten Tag!
Ich habe derzeit ein kleines Problemchen mit dem Internet Explorer:
Es geht um eine Internetseite, welche lokal bei verschiedenen Leuten laufen soll. Ich habe keinen Einfluss darauf, mit welchem Browser diese Internetseite geöffnet wird.
Da diese Seite auch etwas komplexer ist, und ich daher die Navigation zentral anpassen möchte (und kein PHP verwenden kann, da die Seite wie gesagt lokal läuft), habe ich zu folgendem Skript gegriffen: http://www.odi.ch/prog/css/ajaxnav/index.php
In Firefox funktioniert meine Seite mit diesem Skript lokal ausgeführt tip top.
Aber auf dem Internet Explorer wird die Navigation einfach nicht angezeigt (ist auch nicht im Quelltext wiederzufinden). Anders ist es, wenn ich die Seite mit dem IE irgendwo online aufrufe. Dann geht es wieder perfekt.
Hat jemand eine Ahnung woran das liegt, und wie ich das umgehen kann? Bin für Tips und Hilfe wahnsinnig dankbar.
Lg,
Nico
Sowas liegt oft an den Sicherheitseinstellungen des IE. Musst du da mal ein wenig rumfrickeln
Je größer der Deppenfaktor, desto gigantischer das Bescheidwissergefühl
-Dieter Nuhr
Du meinst also, es liegt nicht am Skript selbst?
eher nicht.
Je größer der Deppenfaktor, desto gigantischer das Bescheidwissergefühl
-Dieter Nuhr
wenn ich lokal im IE Javascripts teste, kommt oben immer ein gelber Balken, daß ich die Ausführung von scripts zulassen muss .. und das passiert bei jedem script, auch bei den "guten".. ich hab noch nicht geschaut, wie ich das wegkriege, mich stört es nicht .. aber die Sicherheitseinstellungen, die Adromir genannt hat, klingen schon ganz passend^^
Danke schon mal für eure Antworten.
Ich hab im Anhang mal ein Bild der Fehlermeldung welche erscheint wenn ich im Debugging Modus arbeite.
Hat jemand vielleicht eine Ahnung, wo ich da genau im IE bei den Sicherheitseinstellungen suchen muss? Wo ich ein Häkchen machen/entfernen muss oder so?
Ich kenn mich mit IE nicht aus....
Würde mir ein wenig Sucharbeit ersparen.
Lg,
Nico
So, ich habe mich nun ein wenig weiter durchgewuselt.
Das Problem ist, dass der Internetexplorer die nav.xml (meine Navigationsdatei) wohl immer aus dem Cache holen möchte.
Und das geht schief. Dann erscheint die Meldung, dass er Zugriff verweigert werde.
Das ist wohl ein generelles Problem welches den IE bei der lokalen Verarbeitung von Ajax hat. Aber da muss es doch trotzdem irgendwie einen Workaround geben. Kann doch nicht sein, dass das nicht geht.
Die Ajax Datei sieht wie folgt aus:
Der Part der HTML-Datei, welcher das Script einbindet und behandelt so:Code:/* Dynamically generates a nested UL navigation list from an XML file. Adds CSS class names to the LI elements. leafes get the menu_leaf_class open nodes get the menu_open_class closed nodes get the menu_closed_class the current node gets the menu_active_class */ //config var menu_active_class = "active"; var menu_leaf_class = "leaf"; var menu_open_class = "open"; var menu_closed_class = "closed"; //the default page that is displayed if URL ends in / var menu_default_page = "index.html"; //state var menu_current; // XML menu node of the current location var menu_totop; // path to top folder from current location // main function // navfile : the URL to the navigation XML // menu_id : id of the element into which to insert the navigation function menu_main(navfile, menu_id) { var xml = menu_loadXml(navfile); if (!xml) return; menu_create(xml, menu_id); } // navfile : the URL to the navigation XML function menu_loadXml(navfile) { var xmlHttp = false; // Mozilla, Opera, Safari, IE7 if (typeof XMLHttpRequest != 'undefined') { xmlHttp = new XMLHttpRequest(); } if (!xmlHttp) { // before IE 6 try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { xmlHttp = false; } } } if (!xmlHttp) { alert("Sorry, your browser does not support AJAX!"); return false; } xmlHttp.open("GET", navfile, false); xmlHttp.send(null); // when on local file system browsers return 0 here if ((xmlHttp.status==0) || ((xmlHttp.status>=200) && (xmlHttp.status < 400))) { return xmlHttp.responseXML.getElementsByTagName("navigation")[0]; } else { alert("AJAX error: "+ xmlHttp.status +" "+ xmlHttp.statusText); return false; } } // xml : the XML root node of the navigation XML // menu_id : id of the element into which to insert the navigation function menu_create(xml, menu_id) { var url = location.href; if (url.lastIndexOf("/") == (url.length-1)) { url = url+menu_default_page; } if (url.lastIndexOf("?") >= 0) { url = url.substring(0, url.lastIndexOf("?")); } if (url.lastIndexOf("#") >= 0) { url = url.substring(0, url.lastIndexOf("#")); } menu_current = menu_getCurrentMenu(xml, url); menu_totop = menu_getPathToTop(menu_current); var main = document.getElementById(menu_id); if (!main) { alert("No element with id '"+ menu_id +"' found"); return; } var root = document.createElement("ul"); menu_traverse(xml, root); main.appendChild(root); } /* Walks down the subtree and on the way back sets properties. element : the parent XML node root : the DOM node of the enclosing UL returns bit set 1: set = element is a node, unset = element is a leaf 2: set = element contains the active node */ function menu_traverse(element, root) { var props = 0; var ihavechildren = false; var icontainactive = false; for (var i=0; i<element.childNodes.length; i++) { var child = element.childNodes[i]; if (child.nodeType != 1) continue; if (child.nodeName != "menu") continue; ihavechildren = true; // create DOM var li = document.createElement("li"); li.className = ""; var a = document.createElement("a"); var url = child.getAttribute("url"); if (!url) { var submenus = child.getElementsByTagName("menu"); for (var j=0; j < submenus.length; j++) { url = submenus[j].getAttribute("url"); if (url) break; } } if (!url) url="#"; // we are desperate now var iamactive = (child == menu_current); if (iamactive) { li.className = menu_active_class; icontainactive = true; } a.setAttribute("href", menu_totop + url); var text = document.createTextNode(child.getAttribute("title")); a.appendChild(text); li.appendChild(a); root.appendChild(li); // recurse var ul = document.createElement("ul"); var subprops = menu_traverse(child, ul); // aggregate bits if (subprops & 1) { li.className += " "+ (iamactive || (subprops & 2) ? menu_open_class : menu_closed_class); li.appendChild(ul); } else { li.className += " "+menu_leaf_class; } props |= subprops; } if (ihavechildren) props |= 1; if (icontainactive) props |= 2; return props; } function menu_getPathToTop(menu) { var path = ""; if (menu == null) return path; var url = menu.getAttribute("url"); var a = url.split(/[\/]/); if (a.length == 1) return path; for (var i=0; i < a.length - 1; i++) { path += "../"; } return path; } // determines the current location in the nav tree. // its the longest URL that matches the location. // xml : the XML root node of the navigation XML // loc : the current URL location function menu_getCurrentMenu(xml, loc) { var current = null; var maxlen = 0; var menus = xml.getElementsByTagName("menu"); for (var i=0; i < menus.length; i++) { var menu = menus[i]; var url = menu.getAttribute("url"); if (!url) continue; if (url.length < maxlen) continue; if (!menu_isSameUrl(loc, url)) continue; current = menu; maxlen = url.length; } return current; } //matches two URIs when href is the last part of url //.. and . are correctly resolved function menu_isSameUrl(url, href) { var a = url.split(/[?\/]/i); var b = href.split(/[?\/]/i); var i = a.length - 1; var j = b.length - 1; while ((i >= 0) && (j >= 0)) { if (b[j] == "..") { j-=2; continue; } if (a[i] == "..") { i-=2; continue; } if ((b[j] == ".") || (b[j] == "")) { j--; continue; } if ((a[i] == ".") || (a[i] == "")) { i--; continue; } if (! (a[i] == b[j])) return false; i--; j--; } return true; }
Kann mir irgendjemand sagen, wie ich verhindere, dass der IE die Datei aus dem Cache herauslädt? In einem anderen Forum habe ich was davon gelesen, dass hinten an die Datei noch eine Zufallsvariable angebunden wird. Somit muss die Datei bei jedem Seitenaufruf neu geladen werden. Das Problem: in diesem Fall handelte es sich um eine PHP-Datei. Aber bei einem XML-File kann ich doch keine Variable anbinden. Oder doch?HTML-Code:<link rel="stylesheet" type="text/css" href="assets/css/layout.css" media="screen" /> <link rel="stylesheet" type="text/css" href="assets/css/print.css" media="print" /> <script type="text/javascript" src="assets/scripts/ajaxmenu.js"></script> </head> <body onload="menu_main('assets/navigation/nav.xml', 's1');"> <div id="header"></div> <div id="wrapper"> <div id="navigationbar"> <div id="s1"></div>
Es ist so schrecklich. Ich such jetzt schon wieder über drei Stunden nach einer Problemlösung....
#.Viele Grüße - Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
PHP Tutorials und kostenlose Scripts gibt's bei phpBuddy.eu
Follow phpBuddy on Twitter
LTFB - anfängerfreundliche Tutorials
.
Also Meta Tag Cache-Control habe ich gerade mal ausprobiert. Funzt leider nicht.
Jetzt kenn ich mich nicht so gut mit JS aus: Wie stelle ich das am besten an, dass hier:
hinter dem Dateinamen eine Zufallsvariable (oder ein Timestamp) angehängt wird?HTML-Code:<body onload="menu_main('assets/navigation/nav.xml', 's1');">
Lg,
Nico
Vielleicht geht's, vielleicht nicht - Versuch macht klug.HTML-Code:<body onload="menu_main('assets/navigation/nav.xml?'+Math.random(), 's1');">
#.Viele Grüße - Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
PHP Tutorials und kostenlose Scripts gibt's bei phpBuddy.eu
Follow phpBuddy on Twitter
LTFB - anfängerfreundliche Tutorials
.
Vielen Dank für deine fixe Antwort.
Aber leider funktioniert es nicht. Danke dennoch für den Tip!
Für weitere Tips von allen Seiten bin ich nach wie vor dankbar!
Falls du PHP verwenden möchtest hier eine kleine Alternative:
http://www.server2go-web.de/
habe damit das CMS System für einen Kunden komplett von CD umsetzen können.
I like "selbstgemacht"!
3 Backlinks aus deinem Artikel
Fotos Online Preisvergleich
Ich tausche Links - auch mit schwachen oder neuen Seiten. Schreib mir einfach
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)