JS File neuladen

Experience1986

Erfahrenes Mitglied
Hi,

Ich möchte in einem Dokument eine JS-Datei neuladen, ohne das ich die ganze seite neulade.

also in der JS Datei befinden sich variablen, und diese sollen immer aktuell gehalten werden.

Die Variablen werden durch PHP erzeugt und können sich deshalb immer verändern.


Ist sowas machbar?
 
Es geht hier um die Seite "Outlook:Heute" in Microsoft Outlook, die ist in HTMl geschrieben und wird lokal ausgeführt.

Und da geht nix mit PHP.

Über JavaScript binde ich eine PHP Datei ein, die die Variablen enthält. <script src="http://www.domain.de/datei.php"></script>

und ich will halt, das diese "datei.php" immer wieder, ohne die Seite an sich neuzuladen, aktualisiert wird.
 
Sorry für mein voriges Posting hier, das hatte ich 1 Minute nach dem Absenden gelöscht, weil es vom Inhalt her sowieso nicht gepasst hat - daher wird dein Posting jetzt niemand unbedingt verstehen.

Dass du offline arbeitest wäre schonmal der zweite Grund gewesen, PHP fallenzulassen, aber auch das wussten wir ja nicht...
(wie soll dann btw. die JavaScript-Datei mit PHP dauernd geändert werden??)

Wenn du eine PHP-Datei per
PHP:
<script src="bla.php">
</script>
einbindest, dann kannst du übrigens auf keinen Fall von einem JavaScript sprechen, denn das Script-Tag ist nicht nur auf die Einbindung von JavaScript beschränkt, es ist u.a. auch VB-Code möglich und PHP bspw. ebenso.

Denn die XML- (<? ... ?>) und die SGML-Variante (<?PHP ... ?>), PHP-Scripte in ein Dokument einzubinden sind nicht die einzigen Varianten!
Es existiert auch die einfache Methode des Script-Styles zur Einbindung, die du hier versuchst - korrekter wäre aber durchaus:
PHP:
<script language="php" src="bla.php">
</script>
mit dem zusätzlichen language-Attribut.

Grundsätzlich kann ein Neuladen einer externen *.js-Datei ja nur erfolgen, wenn der Inhalt des Dokumentes sich verändert, das ist in JavaScript u.a. möglich mit der document.write()-Methode, die dir aber die komplette Seite neu überschreiben würde, oder mit der Eigenschaft innerHTML, die aber nur der IE, Netscape in höheren Versionen und der Mozilla richtig interpretieren kann.

Vorstellen könnte ich mir aber, dass du ein Frameset hernimmst, welches deine eigentliche Seite komplett beinhaltet und aber noch einen unsichtbaren Frame enthält.
Diesen könntest du periodisch per document.write() mit Code zum Einladen einer *.js-Datei neu beschreiben.
Aus deiner eigentlichen Seite heraus müsstest du dann mit JavaScript wie folgt anweisen:
PHP:
parent["framenamedesunsichtbarenframes"].document.write("<script src='bla.js' language='JavaScript'><\/script>");
Dann hättest du deine JavaScript-Datei neu eingelesen im unsichtbaren Frame.
Falls dieser JavaScript-Block dann aber dein eigentliches Fenster beeinflussen soll, musst du natürlich auch den anderen Frame bei jeder deiner Anweisungen referenzieren:
PHP:
parent["framenamedesunsichtbarenframes"].variable = variable;
würde dann eben aus dem unsichtbaren Frame heraus eine Variable im anderen Frame definieren, die den gleichen Wert wie eine Variable aus dem unsichtbaren Frame besäße.

Reichlich umständliche Methode, aber wüsste grad keine gescheitere...

Geist
 
Also, die PHP Datei wird nur dann geladen, wenn man online ist.
Da hab ich ne Variablen Abfrage mit JS gemacht.

Die PHP Datei beinhaltet die Variable Posts, und beinhaltet die akttuellen Posts eines Forums. Das gleiche auch mit news und messages. Der Inhalt der Variable wird durch PHP aus MySL ausgelesen.
Aber das ist ja eigentlich ffür jetzt unwichtig.

ich will nur, das die Datei neugeladen wird. also, das wenn die Variable posts den Wert Hallo hat, und danach wird diese geändert in Hallo welt, dann soll das da ohne das Laden der gesamten HTML Seite da hin gestellt werden.

So nach diesem Modell:
<script src="http://www.rtl.de/datei.php" id="data"></script>

bla, bla, bla...

<script langauge="javascript">
function refresh_data()
{
data.neuladen();
window.setTimeout("refresh_data();",60000000);
}
window.setTimeout("refresh_data();",60000000);

</script>
 
Kann leider nicht einschätzen, wie's um deine JavaScript-Kenntnisse steht, aber das was ich oben geschrieben habe ist meine Erklärung für das Problem, genauer kann ich nicht.

Wenn du das umsetzen kannst, dann sollte's laufen, ansonten hab ich leider mit der v4 des Boards anderes in Richtung JavaScript um die Ohren, als jetzt Zeit für ein Modifizieren an konkreten Dateien zu finden.

Geist
 
Naja, ich kann schon etwas JS, das was ch da geschrieben habe, , geht ja, bis auf das neuladen:
data.neuladen();

Weil es "neuladen()" ja gar nciht gibt.
 
Eben, und die wirst du ad hoc auch nicht so schnell definieren können, denn dafür gibt es afaik keine Bordmittel.

Was ich mir aber noch überlegt habe ist:
Du kannst die Sache mit innerHTML ja mal ausprobieren, Outlook dürfte zur Darstellung von Webinhalten ja eine IE-angelehnte Engine verwenden und kann sicher obige Eigenschaft interpretieren.

Versuch's einfach mal, indem du in einem beliebigen Dokumentenabschnitt einfach mal dynamisch einen <script>-Tag einfügst:
PHP:
<script type="text/javascript" language="JavaScript">
<!--
function refresh_data() { 
    document.all["abschnittsid"].innerHTML = "<script language='JavaScript' src='bla.js'><\/script>";
    window.setTimeout("refresh_data();",60000000); 
} 
window.setTimeout("refresh_data();",60000000);
//-->
</script>
wäre jetzt auf den IE zugeschnitten, aber könnte ja gehen.
Müsstest halt noch irgendwo im Dokument einen <span>- oder <div>-Tag definieren.

hth,
Geist
 

Neue Beiträge

Zurück