+ Antworten
Ergebnis 1 bis 7 von 7

HTML/Java-Script/PHP: Popup öffnen, wenn sich Datei geändert hat

Eine Diskussion über HTML/Java-Script/PHP: Popup öffnen, wenn sich Datei geändert hat im Forum Technik Ecke. Teil des Off Topic-Bereichs; Hallo an die Programmier-Gurus! Ich tüftle gerade etwas an einer Webseite herum und versuche nun folgendes: Ich habe eine Textdatei, ...

  1. #1
    Einzelkämpfer..Klar?
    Avatar von ENTARO
    Registriert seit
    30.03.2007
    Alter
    31
    Beiträge
    1.989

    HTML/Java-Script/PHP: Popup öffnen, wenn sich Datei geändert hat

    Hallo an die Programmier-Gurus!
    Ich tüftle gerade etwas an einer Webseite herum und versuche nun folgendes:
    Ich habe eine Textdatei, welche ständig neuen Inhalt bekommt.
    Sobald nun diese Textdatei geändert wird, möchte ich dass sich
    auf einer Homepage, welche ich Offline verwende, ein popup-Fenster öffnet
    welches mir sagt, dass die Datei geändert wurde.
    Falls nichts geändert wurde, so soll auch keine Meldung erscheinen.

    Die Homepage lasse ich mittels META-Tag jede Minute neu laden, jedoch bin ich mir
    nicht sicher, ob ich für das popup nur mit HTML-Auskomme, da ja abgefragt werden muss,
    ob sich die Datei geändert hat.

    Ich denke dass ich mindestens Java-Script verwenden muss oder auch PHP.
    Hat jemand Ahnung, wie ich das anstellen könnte?

    Auch wenn mir die Aufgabe sehr leicht vor kommt, stehe ich trotzdem wie der Ochse vor dem Berg
    -ENTARO

  2. #2
    Oberstabsfeldwebel
    Avatar von .deviant
    Registriert seit
    01.06.2004
    Alter
    28
    Beiträge
    5.623
    Klingt nach ner typischen AJAX-Anwendung (das wäre dann (im Regelfall) PHP und JS). Solltest du dich mal nach umschauen, vlt find ich gleich auch noch etwas Zeit, was zu finden.
    The poetry that comes from the squarin' off between
    And the circling is worth it, finding beauty in the dissonance

  3. #3
    Sofern du während der Übertragung der relevanten Informationen der Textdatei keine Trennung zwischen Client und Server benötigst oder vorliegen hast, kannst du dies auch rein über JavaScript realisieren.

    Wie .deviant schon sagt bieten sich dazu AJAX-Techniken an.

    Benötigst du ein Minimalbeispiel, oder hast du dein Vohaben schon umgesetzt, bzw. reicht dir diese Information?

  4. #4
    Einzelkämpfer..Klar?
    Avatar von ENTARO
    Registriert seit
    30.03.2007
    Alter
    31
    Beiträge
    1.989
    Bisher habe ich folgendes realisiert:
    - Ich aktualisiere eine vorliegende Textdatei
    - Sobald ich diese abspeichere, passiert zunächst garnichts (ist auch ok so)
    - Auf der Webseite habe ich ein Refresh-Intervall eingebaut:
    Code:
    <meta http-equiv="REFRESH" content="10; URL=Index.htm">
    womit die Seite alle 5-10 Minuten aktualisiert wird.
    - Diese Aktualisierung möchte ich dazu ausnutzen, dass mir kontrolliert wird, ob sich die Textdatei geändert hat.
    Wenn dem so ist, dann soll sich ein Popupfenster öffnen mit der Meldung: Neue Nachricht, oder sowas. Der Inhalt
    ist egal. Hat sich nichts geändert, dann braucht es das Popup auch nicht.

    Folgendes Javascript habe ich gefunden, welches mir ein popup öffnet aber nichts abfragt:
    -
    Code:
    <script type="text/javascript">
    <!--
    function popup(mylink, windowname)
    {
    if (! window.focus)return true;
    var href;
    if (typeof(mylink) == 'string')
    href=mylink;
    else
    href=mylink.href;
    window.open(href, windowname, 'width=400,height=200,scrollbars=no,menubar=no');
    return false;
    }
    //-->
    </script>
    Aufgerufen wird das Script im Body:
    Code:
    <body onload="popup('Meldung.html', 'MELDUNG')">
    Meldung.html beinhaltet auch lediglich einen statischen Text: "Neue Nachricht"

    Das Javascript oben muss noch etwas aufgebohrt werden, jedoch habe ich in google keine
    anständige seite gefunden, wo mein Problem ansatzweise behandelt wird.

    Sind meine Ansätze so überhaupt vereinbar?
    Ich freue mich über jedes Minimalbeispiel

    Danke inzwischen!
    -ENTARO

  5. #5
    Ok, ich denke da ist noch einiges an Arbeit drin.

    Zunächst würde ich den von dir beschriebenen Prozess vollkommen unabhängig von deinem HTML-Gerüst realisieren. Somit sieht unser benötigtest HTML-Grundgerüst wie folgt aus.

    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    2. <html xmlns="http://www.w3.org/1999/xhtml">
    3. <title>Ich bin nur ein Titel ...</title>
    4. <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    5. </head>
    6. <script type="text/javascript" src="./jquery.js"></script>
    7. <script type="text/javascript" src="./myscript.js"></script>
    8. </body>
    9. </html>

    Der für uns wesentliche Aspekt ist das Einbinden der JavaScript-Dateien.
    1. <script type="text/javascript" src="./jquery.js"></script>
    2. <script type="text/javascript" src="./jquery.js"></script>
    Dabei handelt es sich bei der Datei "./jquery.js" um das JavaScript-Framework jQuery, welches uns das schreiben unseres speziellen JavaScriptes erleichtert und sicherstellt, dass es bei unterschiedlichen Browsern nicht zu problemen kommt. Das arbeitende JavaScript befindet sich in der Datei "./myscript.js". Beide Dateien können natürlich auch einen anderen Namen haben und an sich an eine anderen Stelle befinden, obiges ist nur eine einfache Möglichkeit. Sofern du ein größeres Projekt aufbauen möchstest solltest jedoch eine sinnvolle Ordnerstruktur anlegen um es übersichtlicher zu gestallten. Sofern dies länger als ein paar Tage oder wenige Wochen genutzt werden soll, solltest du der Datei "./myscript.js" einen intuitiveren Namen geben, so dass du später schon am Namen erkennen kannst, was sich dahinter verbirgt.

    Falls du genaueres über die Positionierung der Aufrufe von JavaScript-Dateien etc. wissen möchtes, so kann ich dies gerne auch nochmal ansprechen.

    Kommen wir nun zu einem sehr simplen Quellcode. Ich werde hierbei nicht auf auf mögliche Lösungen eingehen, bei denen der Server dem Browser mitteilen kann, dass es Änderungen gibt, wie es mit Comet oder HTML5 WebSocket möglich wäre, da das eine noch eine Anpassung des Servers benötigt und sich das andere noch in einer Entwicklungsphase befindet, sondern eine Ajax-Lösung nutzen, bei der unser Client immer wieder eine Anfrage stellen muss um zu prüfen, ob es Änderungen gab.

    Der Inhalt der Datei "./jquery.js" sollte dann wie folgt lauten:
    1. $(document).ready(function()
    2. {
    3. var cache = new String();
    4.  
    5. function event()
    6. {
    7. $.ajax({
    8. url: 'http://beispiel.de/textdatei',
    9. dataType: 'text',
    10. success: function(data)
    11. {
    12. if(data != cache)
    13. {
    14. cache = data;
    15. window.open(
    16. 'http://beispiel.de/meldung.html',
    17. 'Meldung',
    18. 'width=400,height=200,scrollbars=no,menubar=no'
    19. );
    20. }
    21.  
    22. setTimeout(
    23. event,
    24. 5 * 60 * 1000 // 5 minutes
    25. );
    26. }
    27. });
    28. };
    29. event();
    30. });

    Sofern du aufgrund von Übertagunsraten einen zu langsamen Aufbau dieser Seite beobachtest bietet es sich an, den Aufruf
    1. <script type="text/javascript" src="./jquery.js"></script>
    2. <script type="text/javascript" src="./jquery.js"></script>
    in einen einzelnen Aufruf umzuwandeln und den den Inhalt beider Dateien entsprechend in einer Datei zu verknüpfen. Dadurch wird die Anzahl der Verbindungen zum Laden der JavaScript Dateien entsprechend um eine Verbindung verringert und somit die Zeit für diese Verbindungsaufbau eingesparrt.
    1. <script type="text/javascript" src="./jquery_and_myscript.js"></script>
    Generell sollten wir dann aber auch andere Optimierungsmöglichkeiten besprechen.

  6. #6
    Einzelkämpfer..Klar?
    Avatar von ENTARO
    Registriert seit
    30.03.2007
    Alter
    31
    Beiträge
    1.989
    Hi,
    das ist mal eine Anleitung, DANKE!
    ok, da bin ich mit meinem Ansatz wohl noch ziemlich weit von der Lösung entfernt

    Ich werde das alles durchgehen und mich dann entweder mit dem fertigen Script melden,
    oder noch wertere Sachen Fragen

    Danke inzwischen!
    -ENTARO

  7. #7
    Einzelkämpfer..Klar?
    Avatar von ENTARO
    Registriert seit
    30.03.2007
    Alter
    31
    Beiträge
    1.989
    Hallo!
    So, ich habe nun das Problem gelößt, aber ich habe einen anderen Ansatz verwendet und bin von
    der Lösung über HTML, Javascript, PHP usw. komplett weg gegangen.
    Ich verwende nun Psexec von Sysinternals in kombination mit dem msg-Befehl von Windows.
    Bei der HTML-Lösung muss die Webseite permanent geöffnet sein und das wird schon zum Problem.

    Nochmals Danke an alle, speziell an Osbes, für die Hilfe!
    -ENTARO

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •