stefanos: mit Php u Javascript Inhalte dynamisch verändern

Hallo Selfforum!

Was spricht eigentlich dagegen seine Inhalte mit Php auszuwählen (Serverseitig) und dann per Javascript dynamisch anzuzeigen?

<?php

function showInhalt1()
{
include ("htmlinhalt.txt");
}
?>

In Javascript dann:
function aenderinhalt()
{
 document.all.dynamicb.innerHTML ="<?php showInhalt1(); ?>";
}

Der Html-Link würde dann so ausschauen:
<a href="#" onclick="aenderinhalt()" >HOME</a>

Dadurch wird die Seite ja auch nicht "neu" geladen!?
Wo ist der Haken an der Geschichte? Funktionieren tut es ja!

mfg
stefanos

  1. Hi,

    Was spricht eigentlich dagegen seine Inhalte mit Php auszuwählen (Serverseitig) und dann per Javascript dynamisch anzuzeigen?

    wenn Du es richtig machst: nichts.

    document.all.dynamicb.innerHTML ="<?php showInhalt1(); ?>";

    Oh, für Deine Seiten sind IEs ab Version 4 relevant, aber keine anderen Browser? Faszinierend.

    Dadurch wird die Seite ja auch nicht "neu" geladen!?

    Nein, PHP hat das Include ja auch längst ausgeführt. Der Inhalt stand dem JavaScript-Code von Anfang an zur Verfügung, wie Du dem Quellcode der Ausgabe sicher entnommen hast.

    Wo ist der Haken an der Geschichte?

    Der liegt darin, dass Du nicht (nämlich *nie*) "PHP _und_ JavaScript" hast, sondern immer nur "erst PHP, und dann später vielleicht JavaScript".

    Funktionieren tut es ja!

    Echt? Dann schalte JavaScript mal aus.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo

      Hi,

      Oh, für Deine Seiten sind IEs ab Version 4 relevant, aber keine anderen Browser? Faszinierend.

      Ich verwende den FF 2.0.
      Laut Selfhtml wird document.all von fast allen Browsern unterstützt oder täusch ich mich? http://de.selfhtml.org/navigation/suche/index.htm?Suchanfrage=document.all
      Außerdem handelt es sich bei mir z.Z um eine Intranet-Anwendung, dh mit dem Problem der unterschiedlichen Interpretation der Browser will ich mich erst später beschäftigen.

      Dadurch wird die Seite ja auch nicht "neu" geladen!?

      Nein, PHP hat das Include ja auch längst ausgeführt. Der Inhalt stand dem JavaScript-Code von Anfang an zur Verfügung, wie Du dem Quellcode der Ausgabe sicher entnommen hast.

      Ist mir klar! Zuerst wird der Php-Code durch den Server übersetzt und dann erst die Seite interpretiert (sprich auch das Javascript).

      Wo ist der Haken an der Geschichte?

      Der liegt darin, dass Du nicht (nämlich *nie*) "PHP _und_ JavaScript" hast, sondern immer nur "erst PHP, und dann später vielleicht JavaScript".

      Das war mir klar!
      Gibt es eigentlich Probleme, wenn die Html Datei dann zu groß ist, weil ich die Inhalte alle mit Php aus externen Dateien inkludiere? Oder ist das bei einer Seite mit 5-6 "Textfetzen" irrelevant?

      Echt? Dann schalte JavaScript mal aus.

      Nein :)

      Grüße

      1. Hallo,

        Echt? Dann schalte JavaScript mal aus.

        Nein :)

        Was ist der tiefere Sinn Auswahl mit PHP zu machen und die Seite entsprechend neu zu laden. Das häufige Öffnen der Datei serverseitig sollte schneller funktionieren, als das ständige Übertragen der "Textfetzen", Intranet hin oder her.

        bydey

        --
        -- bydey ist die Signatur und Verabschiedung, nicht der Nick --
        -- Navigate all your PHP web projects with  PHP Project Browser--
        1. Hallo,

          Was ist der tiefere Sinn Auswahl mit PHP zu machen und die Seite entsprechend neu zu laden.

          Meiner Meinung schaut das ganze dynamisch viel besser aus (wenn die Seite nicht neugeladen werden muss). Genau deshalb wollte ich ja fragen, ob es da Probleme geben kann.
          Deaktiviertes Javascript wär in dem Fall natürlich ein großes Problem. Aber gibt es sonst noch Probleme?

          1. Hallo,

            Deaktiviertes Javascript wär in dem Fall natürlich ein großes Problem. Aber gibt es sonst noch Probleme?

            Du sagst zwar, daß browserinkompatibilität wg Intranet kein Problem sind, ich würde den Weg trotzdem nicht gehen:

            • ich bin faul
            • wenn ich eine tolle Lösung produziere will ich sie modular wieder- /weiterverwenden
            • und deine Lösung funktioniert dann nur im Intranet

            bydey

            --
            -- bydey ist die Signatur und Verabschiedung, nicht der Nick --
            -- Navigate all your PHP web projects with  PHP Project Browser--
              • und deine Lösung funktioniert dann nur im Intranet

              Wieso sollte meine Lösung im Internet nicht funktionieren?
              Die Lösung funktioniert super im IE und im FF, andere Browser habe ich noch nicht getestet, weil ich voher wissen wollte, ob noch Probleme entstehen können, wenn ich meine Datei mit inkluds dermaßen überfülle.

              1. Hi,

                • und deine Lösung funktioniert dann nur im Intranet
                  Wieso sollte meine Lösung im Internet nicht funktionieren?

                weil sie von JavaScript abhängt. Das entspricht der Internet-tauglichen Definition von "funktioniert nicht".

                Die Lösung funktioniert super im IE und im FF,

                Falsch. Sie funktioniert in keinem von beiden. Und in allen anderen auch nicht. Selbst wenn sie irgend eine Variante von document.all implementiert haben.

                Cheatah

                --
                X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
              2. Hallo,

                Kinder, streitet Euch nicht. Das bringt doch nix. ;-)

                weil ich voher wissen wollte, ob noch Probleme entstehen können, wenn ich meine Datei mit inkluds dermaßen überfülle.

                Kann schon, mit jedem Include findet ein zusätzlicher Plattenzugriff statt. Wenn Deine Seiten das sehr häufig machen und Du auch noch viel Traffic hast, dann kann das langsam werden.

                Vorallem wenn Du so ein Webspace Sparangebot hast, auf dem Du mit noch zehn ähnlichen Kollegen draufbist kann sich das ganz schlecht machen.

                Empfehlung: Bau ein bischen Code mit ein, das Dir die Ladezeit ausgibt, dann hast Du es im Überblick.

                Grüsse

              3. hi,

                • und deine Lösung funktioniert dann nur im Intranet

                Wieso sollte meine Lösung im Internet nicht funktionieren?

                Weil im Internet Inhalte zu großen Teilen über Suchmaschinen aufgefunden werden - und diese sich für Javascript wenig bis gar nicht interessieren.

                gruß,
                wahsaga

                --
                /voodoo.css:
                #GeorgeWBush { position:absolute; bottom:-6ft; }
                1. Hallo!

                  hi,

                  Weil im Internet Inhalte zu großen Teilen über Suchmaschinen aufgefunden werden - und diese sich für Javascript wenig bis gar nicht interessieren.

                  Danke! Das ist ein sehr großes Problem, das ich übersehen habe.

      2. Hi,

        Oh, für Deine Seiten sind IEs ab Version 4 relevant, aber keine anderen Browser? Faszinierend.
        Ich verwende den FF 2.0.
        Laut Selfhtml wird document.all von fast allen Browsern unterstützt oder täusch ich mich?

        Du täuschst Dich. In Firefox wurde document.all erst spät eingefügt, um mit antiken Webseiten klar zu kommen, deren Autoren von Technik keine Ahnung haben. Wenn ich mich recht erinnere, wird die Simulation des Objektes auch nur im Quirks-Mode durchgeführt - also in dem Modus, den normalerweise nur Autoren verwenden, die von Technik keine Ahnung haben. Und: Wenn Du Firefox fragst, ob er document.all kennt, verneint er dies.

        document.all ist ein IE-proprietäres Modell, das nach dem IE 4 keine Daseinsberechtigung mehr besitzt. Ich dachte eigentlich, das sei mittlerweile so oft durchgekaut geworden, dass dies keiner Erwähnung mehr bedarf.

        Außerdem handelt es sich bei mir z.Z um eine Intranet-Anwendung, dh mit dem Problem der unterschiedlichen Interpretation der Browser will ich mich erst später beschäftigen.

        Warum willst Du Dir zusätzliche Arbeit machen, indem Du erst mal ein totes Pferd aufsattelst? Abgesehen davon: Die Tatsache, dass etwas in einem Intranet o.ä. eingesetzt werden soll, ist kein unerhebliches Detail, sondern eine *absolut grundlegende Information*. Wenn derartiges zutrifft, sage es in Zukunft bitte *un*bedingt sofort bei der Fragestellung.

        Gibt es eigentlich Probleme, wenn die Html Datei dann zu groß ist,

        Wie definierst Du "zu groß", was sind für Dich in diesem Kontext Probleme?

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Wie definierst Du "zu groß", was sind für Dich in diesem Kontext Probleme?

          Ich will die Inhalte dynmisch mit innerHTML ändern und habe Angst das einfach zu viel Text vom Browser interpretiert wird (sonst könnte man ja kleine private Homepages in eine einzige Datei schreiben[nur rein theoretisch natürlich, es ist mir schon klar, dass das praktisch keinen Sinn hat]) und dadurch alles langsam wird. Könnte es sein, dass wenn ich meine (zb 7-8) Seiteninhalte dynamisch (praktisch auf nur einer bis zwei Seiten) ändere, dass die Seite - ab einem gewissen Umfang - merklich langsamerer wird (höhere Ladezeiten)?

          1. Hi,

            Ich will die Inhalte dynmisch mit innerHTML ändern und habe Angst das einfach zu viel Text vom Browser interpretiert wird (sonst könnte man ja kleine private Homepages in eine einzige Datei schreiben[nur rein theoretisch natürlich, es ist mir schon klar, dass das praktisch keinen Sinn hat]) und dadurch alles langsam wird. Könnte es sein, dass wenn ich meine (zb 7-8) Seiteninhalte dynamisch (praktisch auf nur einer bis zwei Seiten) ändere, dass die Seite - ab einem gewissen Umfang - merklich langsamerer wird (höhere Ladezeiten)?

            ja, natürlich - es werden ja mehr Daten übertragen, zudem vermutlich vor den eigentlichen Inhalten. Zusätzlich kann der Austausch der Inhalte per .innerHTML einige Zeit in Anspruch nehmen.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
  2. hi,

    Was spricht eigentlich dagegen seine Inhalte mit Php auszuwählen (Serverseitig) und dann per Javascript dynamisch anzuzeigen?
    [...]
    Dadurch wird die Seite ja auch nicht "neu" geladen!?

    Größter Nachteil so einer Strategie ist für mich, dass unterschiedliche Inhalte nicht unter eigenständigen URLs angeboten werden - es erschwert mir das gezielte Bookmarken/Links weitergeben, und aus einem SuMa-Ergebnislisting werde ich vermutlich oftmals auch nicht auf den gewünschten Inhalt verlinkt.

    Wenn du es so machen willst, solltest du m.E. nicht alles "gleich" serverseitig includen, sondern nur auf Anforderung per AJAX nachladen. Dein Vorteil(?), dass die Seite nicht neu aufgebaut wird, bleibt erhalten - Nachgeladen wird natürlich trotzdem, aber "unsichtbar" im Hintergrund.

    Um das Bookmark-Problem zu umgehen, nutzen manche Web2.0-er location.hash, also Anker, um darin Informationen über den gerade angezeigten Inhalt abzulegen.

    Das Problem mit den SuMa könnte man umgehen, in dem man nach wie vor auf komplette HTML-Dokumente verlinkt, die diese abrufen und indizieren können - und beim normalen Nutzer fängt man die Linkklicks halt ab, und lädt stattdessen per AJAX nach. Ob man für beides, normale HTML-Verlinkung und dynamisches Nachladen, die gleichen Ressourcen verwendet (je "Inhalt" ein vollständiges HTML-Dokument, wird per AJAX geladen und nur das nötige - body? - "rausgeschnitten"), oder separate, wäre dann eine Frage der Administration bzw. Automatisation (werden die Inhalte per CMS eingepflegt/in einer DB gehalten, sollte es ein leichtes sein, daraus dynamisch zwei verschiedene Aufbereitungen zu erstellen).
    Wenn der Nutzer aus einer SuMa heraus auf einer normalen Unterseite aufschlägt könnte man dann noch überlegen, ob man ihn per JS auf die Hauptseite weiterleitet, und dort den gewünschten Inhalt dann wieder dynamisch reinlädt.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }