heinetz: Javascript-Funktion per $_GET

Hallo Forum,

ich stehe vor folgender Aufgabe:

Ich verlinke von Seite A auf Seite B und möchte, dass auf Seite B, nachdem Sie geladen wurde, einige Zeilen JS ausgeführt werden. Soweit nicht weiter problematisch. Allerdings ist das, was da ausgeführt werden soll so flexibel, dass es sich nicht auf Seite B als Funktion definieren liesse.

Kann ich eine anonyme Funktion als Wert eines $_GET-Paramters, bspw. $_GET['callback'] auf Seite A in meinem Request nach Seite B definieren, den ich dann auf Seite B ausführe?

Ich habe vor ungefähr einem Jahr ein bisschen was mit JSONP gemacht und erinnere mich düster daran, dass es sowas da gab.

beste gruesse,
heinetz

  1. Mahlzeit,

    Kann ich eine anonyme Funktion als Wert eines $_GET-Paramters, bspw. $_GET['callback'] auf Seite A in meinem Request nach Seite B definieren, den ich dann auf Seite B ausführe?

    Du kannst alles per GET übergeben, solange es nicht zu lange ist. Allerdings halte ich dein Vorhaben für einen Designfehler. Abgesehen davon, dass ich dir damit jedes beliebige Javascript in deine Seite schiebe, gibt es IMO keinen Grund eine solche Funktion direkt übergeben zu müssen.

    Erzähl mal, was du genau vorhast, dann gibts evtl. ne viel einfachere und bessere Lösung.

    --
    42
    1. ich entwickle gerade eine multipage-anwendung in jqm 1.3.3 und auf den Seiten gibt es teile, die on touch per ajax nachgeladen werden. ich möchte so eine Seite bpsw. auch so aufrufen können, dass der touch onpageinit automatisch ausgeführt wird.

      1. Meine Herren!

        ich entwickle gerade eine multipage-anwendung in jqm 1.3.3 und auf den Seiten gibt es teile, die on touch per ajax nachgeladen werden. ich möchte so eine Seite bpsw. auch so aufrufen können, dass der touch onpageinit automatisch ausgeführt wird.

        Ich würde an deiner Stelle bei jedem dynamischen Nachlade-Vorgang die URL in der Adresszeile aktualisieren und zwar so, dass aus der Adresse rekonstruierbar ist, welche Inhalte bereits nachgeladen wurden. Das kannst du mit der history-API bewerkstelligen. Wenn ein Nutzer sich dann entscheidet, den Link zu kopieren und zu einem späteren Zeitpunkt wieder aufzurufen, dann kannst du schon mit PHP aus der URL die Inhalte ermitteln, die der Nutzer erwartet, und sofort eine Seite mit allen "dynamischen" Inhalten zusammenbauen.

        --
        “All right, then, I'll go to hell.” – Huck Finn
        1. Meine Herren!

          ich entwickle gerade eine multipage-anwendung in jqm 1.3.3 und auf den Seiten gibt es teile, die on touch per ajax nachgeladen werden. ich möchte so eine Seite bpsw. auch so aufrufen können, dass der touch onpageinit automatisch ausgeführt wird.

          Ich würde an deiner Stelle bei jedem dynamischen Nachlade-Vorgang die URL in der Adresszeile aktualisieren und zwar so, dass aus der Adresse rekonstruierbar ist, welche Inhalte bereits nachgeladen wurden. Das kannst du mit der history-API bewerkstelligen. Wenn ein Nutzer sich dann entscheidet, den Link zu kopieren und zu einem späteren Zeitpunkt wieder aufzurufen, dann kannst du schon mit PHP aus der URL die Inhalte ermitteln, die der Nutzer erwartet, und sofort eine Seite mit allen "dynamischen" Inhalten zusammenbauen.

          Der Ansatz klingt vernünftig … würde aber bedeuten, dass man nicht bei jedem Nachlade-Vorgang sondern generell bei jeder Aktion auf der Seite, die die Ansicht verändert die URL aktualisieren müsste. In meinem konkreten Fall werden bspw. Inhalte per Ajax in Accordions geladen, die URL des Requests wird bspw. durch eine andere Aktion auf der Seite beeinflusst. Ich müsste sämtliche  Aktionen die Einfluss auf die Darstellung nehmen über die URL abbilden …

          gruss,
          heinetz

          1. Meine Herren!

            Der Ansatz klingt vernünftig … würde aber bedeuten, dass man nicht bei jedem Nachlade-Vorgang sondern generell bei jeder Aktion auf der Seite, die die Ansicht verändert die URL aktualisieren müsste.

            So hat das Internet in Zeiten vor AJAX immer funktioniert. Dann kam AJAX und hat diese ungeschriebene Regel gebrochen. Heute geht man dahin und versucht das beste aus beiden Zeitaltern zu vereinen: Inhalte on-demand, aber mit guter Adress-Haushaltung.

            In meinem konkreten Fall werden bspw. Inhalte per Ajax in Accordions geladen, die URL des Requests wird bspw. durch eine andere Aktion auf der Seite beeinflusst. Ich müsste sämtliche  Aktionen die Einfluss auf die Darstellung nehmen über die URL abbilden …

            Richtig, das kann sehr viel Aufwand bedeuten. Du könntest dich auch dafür entscheiden, dass nur der Hauptinhalt in der Adressleiste reflektiert wird, und marginale Inhalte weiterhin nur on-demand nachgeladen werden.

            --
            “All right, then, I'll go to hell.” – Huck Finn