Tilde: URL an ASP übergeben

Ich habe folgende Funktion geschrieben

function frameset()
{
 if(top==self)
 {
     var adresse = window.location.href;
     document.location.href="../frameset.asp?homepage=adresse";

}

das geht aber nicht wie bekomm ich die url in die asp datei ?

Danke MFG Tilde

  1. Hi,

    ich schätze, Du willst den Inhalt der Variablen adresse übertragen und nicht den String adresse, oder? Das hieße dann:

    function frameset()
    {
     if(top==self)
     {
         var adresse = window.location.href;
         document.location.href=eval("../frameset.asp?homepage=" + adresse);

    }

    Grüße,

    Utz

  2. Ich habe folgende Funktion geschrieben

    function frameset()
    {
    if(top==self)
    {
         var adresse = window.location.href;
         document.location.href="../frameset.asp?homepage=adresse";

    }

    das geht aber nicht wie bekomm ich die url in die asp datei ?

    Danke MFG Tilde

    Hi,

    was willst du eigentlich wirklich?

    Von wo kommst du, wo steht dieser Javascript-Brocken drin (in einer ASP Datei?) Javascript ist clientseitig, ASP serverseitig -> du kannst aber per Javascript dem Client anweisen eine ASP seite anzuziehen.

    Für dein Beispiel, wo "adresse" eine variable ist, die von ASP gefüllt wird (oder wie?) muß sie auch in der ASP Notierung stehen.
    Da deine Funktion, speziell document.location.href nach Client-Manipulation aussieht, sprich also als HTTP-Response an den Client geschrieben wird, muß adresse in <% %> gesetzt werden entweder
    <% Response.Write adresse %> oder <%=adresse %>

    HTH, Gruß, Frank

    1. Hi Frank,

      sorry, aber Du verzapfst Mist:

      Von wo kommst du, wo steht dieser Javascript-Brocken drin (in einer ASP Datei?) Javascript ist clientseitig, ASP serverseitig (...)

      Richtig ist: ASP ist serverseitig. ASP ist aber keine Sprache, sondern eine Plattform. ASP-Seiten können in zwei Sprachen geschrieben werden: VBScript oder halt eben JScript. Kollege Tilde schreibt seine ASP-Seiten möglicherweise in JScript. Alles klar?

      Wobei, bei genauerer Betrachtung (und in Korrektur meiner Antwort unten - ja, ich hab auch Mist verzapft): Huh? Was macht er denn da? Mal window.location, mal document.location? Und er erzeugt keine Header für den Redirect? Sieht eher so aus, als würde Tilde herkömmliches Client-seitiges JavaScript 1:1 auf ASP übertragen wollen. Hinweis: In ASP benutzt man response.redirect, um eine Weiterleitung zu erzwingen - das erzeugt einen Header mit dem Status 302.

      Grüße,

      Utz

      1. Hi Utz,

        sorry, aber Du verzapfst Mist:

        tu ich nicbt... ich hab mich vielleiht etwas undeutlich im ersten Satz ausgedrückt....  Javascript ist und bleibt für mich clientseitig solange man nicht von ServerSide Javascript/Jscript spricht.

        Ich weiß schon wovon ich rede, denn Erfahrung in dem Bereich habe ich mittlerweile mehr als reichlich

        Bezugnehmend auf das Posting von Tilde
        http://forum.de.selfhtml.org/?m=113441&t=20246
        wo er nach einer Möglichkeit sucht, Deep-Linking zu verhindern
        wollte ich auch passend antworten.

        sein Code Schnipsel mit der Funktion und document.location... hat mich zu der Vermutung gebracht, es handelt sich um Clientside Javascript.

        Wie ich in meiner Antwort zu oben referenziertem Posting schon gesagt habe, ist es gar nicht so einfach deep-linking ohne clientseitiges Javascript / für mich nur Javascript !! zu verhindern und den User auf die Hauptseite zu führen. Wie auch? Der Server weiß ja nicht wohin und wie die Seite von ihm geladen wurde. Das merkt man erst beim Client selber.

        Alles klar?

        solche Äußerungen empfinde ich als unnötig arrogant, genau wie der voreilige Schluss, ich würde Mist verzapfen

        Huh? Was macht er denn da? Mal window.location, mal document.location? Und er erzeugt keine Header für den Redirect?

        Wobei ich nichtmal dies als Grund der Nichtfunktion betrachte, sondern eher das die Variable "adresse" falsch implementiert hat, wenn sie denn die Adresse beinhalten soll. Aber darauf habe ich bereits geantwortet, was hätte stehen müssen...

        Der beste Weg führt imho darüber im <head/> jeder ASP Datei (die auch HTML zurückgibt)und (bei der verwendung mehrerer einzelner ASP Seiten) ein Javascript einzusetzen, welches die aufgerufene Adresse verarbeitet und dann mittels document.location.href eine andere Seite erzwingt. Dabei müssen die zu vergleichenden Adressen (ASP-Variablen) über Response.Write in das Javascript geschrieben werden.

        Ich glaube nicht, daß ich mit JScript als Serverseitiger Sprache gleichzeitig Funktionen auf dem Server ausführen kann und die Adresse des Client-Windows lesen kann. Sollte dies doch gehen, lass ich mich gern überzeugen.

        Bis dahin verbleibe ich mit freundlichen Grüßen

        Utz, ich werde es dir nicht gleich machen und vorschnell behaupten, du würdest Mist verzapfen. Deine Vorwürfe gegenüber mir mal weggelassen, hätte deine Antwort keinen so schlechten Eindruck bei mir hinterlassen. Aber dafür ist es zu spät.

        Tschau zum Abend.
        Frank

        P.S. ich glaube nicht, daß Status 302 in diesem Fall dem Kollegen Tilde weiterhilft.

        1. Bevor es zu spät ist.

          Ich möchte mich nicht in den Kreis der Flamer und unsachlich-Streitenden auf dem SelfForum einreihen.

          Deshalb, sollte es weiteren Bedarf an Streit oder gar Flaming geben, nutzt (wer auch immer) bitte meine Mailaddresse. Dort schlägt der Filter dann gnadenlos zu :-)

          1. Hi Frank,

            ich hab eigentlich auch keinen Bedarf an Streit, deswegen verzeihst Du mir vielleicht wenn ich hier antworte:

            1. Sorry für die Formulierung "Mist verzapfen" - sie sollte nicht beleidigend sein, schließlich passiert uns das allen mal. Ich glaubte, das im fraglichen Posting durch die folgende Bemerkung, dass ich selber auch "Mist verzapft" hätte, das auf den richtigen Level gebracht zu haben. Da hab ich mich wohl getäuscht: sorry also nochmal.

            2. Grund für mein "Anspringen" auf Dein Posting war, dass hier schon öfter Leute Fragende für Trottel erklärt haben, nur weil unter der Rubrik ASP JScript-Code erschienen war.

            3. Was ich eindeutig verbockt habe: zuerst hatte ich nur versucht, das falsche JavaScript-Beispiel zu korrigieren. Als ich Dein Posting las, muss ich offensichtlich nen üblen Knoten im Hirn gekriegt haben und war schlagartig davon überzeugt, hier ginge es um mit JScript geschriebenen ASP-Code. Ich hab dann auch nicht mehr gemerkt, dass _dieser_ Code in ASP gar keinen Sinn ergeben würde.

            Zurück zum Fachlichen (in der Hoffnung, dass ich nicht weitere Knoten im Hirn habe):

            1. Was Tilde wohl versucht, ist tatsächlich etwas clientseitiges, und er ist ziemlich nah dran, mit zwei Einschränkungen:

            a) Hilft ihm if(self==top) dann nicht, wenn seine Datei in nem fremden Frameset drinsteckt. Etwas wie if(top.location.href != "name_des_framesets.htm") wäre da besser. Insofern wäre auch var adresse = self.location.href; deutlich besser als var adresse = window.location.href;

            b) document.location.href sollte window.location.href oder - in dem Fall - top.location.href heißen.

            2. Unter bestimmten Bedingungen lässt sich etws derartiges IMHO schon auch server-seitig regeln - nämlich dann, wenn als Referrer, der ja serverseitig ausgelesen werden kann, lediglich zum Beispiel das Frameset selber und ein Navigationsframe als zulässig betrachtet werden kann. Oder: nur Referrer von der eigenen Domain werden als zulässig betrachtet. Das hängt aber natürlich davon ab, wie er seine Navigation gestaltet hat.

            Grüße,

            Utz

              1. Was Tilde wohl versucht, ist tatsächlich etwas clientseitiges, und er ist ziemlich nah dran, mit zwei Einschränkungen:

              a) Hilft ihm if(self==top) dann nicht, wenn seine Datei in nem fremden Frameset drinsteckt. Etwas wie if(top.location.href != "name_des_framesets.htm") wäre da besser. Insofern wäre auch var adresse = self.location.href; deutlich besser als var adresse = window.location.href;

              b) document.location.href sollte window.location.href oder - in dem Fall - top.location.href heißen.

              1. Unter bestimmten Bedingungen lässt sich etws derartiges IMHO schon auch server-seitig regeln - nämlich dann, wenn als Referrer, der ja serverseitig ausgelesen werden kann, lediglich zum Beispiel das Frameset selber und ein Navigationsframe als zulässig betrachtet werden kann. Oder: nur Referrer von der eigenen Domain werden als zulässig betrachtet. Das hängt aber natürlich davon ab, wie er seine Navigation gestaltet hat.

              Grüße,
              Utz

              Hi Utz,

              lassen wir den Streitereikram.. führt zu nix. :-)

              Tilde hat sich anscheinend mit den von mir gegebenen Stichworten self.location & Co. intensiv befasst. Er muß aber auch erstmal wissen, was er genau will und was nicht.

              Lt. meiner Überzeugung: eine Seite, die bei ihm nur im Frameset stehen soll, darf nicht als top.location.href stehen sondern als top.frames['spez. Framename'].location.href

              ergo müßte er jeder seite, die er nicht als top.location.href sehen möchte eine Javascript-Abfrage geben, die top.location.href auf sein Frameset setzt mit entsprechenden GET-Werten, damit sein Script weiß, welcher Navigationspunkt dann wieder aufgerufen werden soll.

              Das ganze serverseitig zu machen ist etwas komplizierter, dafür aber browsersicher. Vor dem Response.Redirect darf er dann aber keine Ausgabe haben, sondern nur eben die Abfrage nach dem Referrer. Das ganze als Include verpackt.

              Tilde wird sicherlich beide Varianten versuchen und dann entscheiden, was für ihn einfacher und besser ist. :-)

              Yo, denn einen schönen Arbeitstag noch.
              Tschau, Frank