Problem mit IE8 und header: Content-Type

arkanoid

Mitglied
Hallo zusammen,

Mal zu einem Problem, an welchem ich gerade ziemlich verstaube.
Um in meiner Seite richtig viel JavaScript Code zu vermeiden, schreibe ich erstmal
jede Zeile in ein Array:

PHP:
$thisFileJS[] = 'JAVASCRIPT-CODE';

und füge diese mit einem Implode zusammen, wobei ich das Ergebnis in eine zuvor gestartete Session schreibe.
PHP:
$_SESSION['indirectJS'] = implode("\n",$thisFileJS);

nun rufe ich eine PHP-Datei auf die ich aber als Script einbinde:
HTML:
<script type="text/javascript" src="/template/js/indirectJS.php?<?= md5($_SESSION['indirectJS']) ?>"></script>

die indirectJS.php is selbst nicht sehr lang:
PHP:
<?
header('Content-Type: text/javascript');
session_start();

if($_SESSION['indirectJS']) echo $_SESSION['indirectJS'];
?>

nun das Problem:
In allen Browser funktioniert das ganze. Nur im Internet Explorer 8 scheint der diese Datei garnicht zu kennen...
Alles, was ich ausserhalb dieser indirectJS-Sache einbinde, wird ausgeführt. Jeder ausgelagerte Code bleibt unausgeführt.

1. Woran liegt das?
2. Kann ich das trotzdem irgendwie für jeden anzeigbar machen
 
Brauchst du den Header? Ich habe so etwas auch mal gemacht und einfach nur per "echo" den JS-Code ausgegeben, ohne Header oder sonstwas. Eigentlich sollte der Browser schlau genug sein, jegliche Textdateien als JS-Code zu interpretieren, wenn sie von einem <script>-Tag geladen werden.

EDIT:
Mich wundert der Parameter, mit dem du die indirectJS.php-Datei aufrufst:
Code:
/template/js/indirectJS.php?<?= md5($_SESSION['indirectJS']) ?>
  • Was macht "<?="? Entspricht das "<? echo "?
  • Warum packst du den MD5-Code als Parameter dran? Wenn du willst, dass die Datei jedes mal neu geladen wird, würde ich einfach time() oder rand() ausgeben lassen. Wenn's nur einmal pro Besuch geladen werden soll würde ich mir den Aufwand mit MD5 sparen (kostet Zeit) und einfach nur die PHP_SESS_ID ausgeben.
 
Zuletzt bearbeitet:
Scheinbar nicht, du hast Recht.
Was aber wiederum nichts an dem Fakt ändert, dass IE8 die PHP Datei nicht vernünftig läd...
Wenn ich den Dateipfad entsprechend in die Adressleiste eingebe, so sagt der mir, dass diese Adresse nicht gefunden werden kann...
dabei liegt diese genau an der Stelle, wo sie referenziert wird...
 
Ja hier mal als Beispiel:
Link

Bloß kann ich den Link nicht lange auf dieser Einstellung lassen, da es sich hier um eine Live Version der Seite handelt und ich eigentlich schon ein (unschönes - deswegen suche ich ja noch nach der Lösung) Workaround dafür hab.

Edit: die entsprechende Stelle findest du im Quellcode, wenn du nach <div id="foot"> suchst...
 
Zuletzt bearbeitet:
Okay, im IE6 bekomme ich den gleichen Fehler wie du wenn ich DIREKT auf das JS zugreifen will, erst versucht er, die Datei herunterzuladen, meldet dann aber "Die Internetseite kann nicht geöffnet werden".
Jetzt bin ich mal zuerst auf die HTML-Seite gegangen, damit erst mal ein Cookie erzeugt wird, und dann auf das JS, schon zeigt IE6 mir was an... Scheint auch der richtige Code zu sein, zumindest ist es mit Chrome, FF und IE exakt das gleiche.
Die Website verhält sich auch überall (IE, FF, Chrome) gleich... Tritt das Problem nur im IE8 auf? Das müsste ich dann mal zuhause probieren...
 
ja, das problem tritt nur im IE8 auf...
Getestete Versionen sind 8.0.7000 und die aktuell über das Windows Update angebotene Version.
 
Hmm, ich probier hier grade mal rum...
Wenn ich versuche, die URL im IE8 direkt aufzurufen (also in meinem Fall http://www.parvita.de/template/js/indirectJS.js?548d7613151acc7d1dfd881dcd6d9b37), kommt wieder der Downloadversuch mit Meldung, dass der Server nicht erreichbar ist. Wenn ich den MD5-Hash weglasse versucht er trotzdem, das herunterzuladen, aber diesmal hat er keinen Fehler. Leider steht in der heruntergeladenen Datei nachher nichts drin.
Wenn ich die Website mit Firefox abspeicher und dann mit IE8 öffne, gibt er mir einige Fehlermeldungen. Vielleicht kannst du dir das mal anschauen. Aber warum er die Datei nicht lädt versteh ich auch nicht.
 
Zurück