Elmar: url, searchstring & co. bei netscape 4.7 und opera

Ich habe einen Warenkorb mit +/- Funktion (Anzahl der Ware nachträglich erhöhen oder verkleinern). Im IE und Netscape 6 funktioniert auch alles wunderbar. Nur Netscape 4.7 und Opera machen Schmerz.

Beim Netscape ergänzt er einfach die Seite Default.htm, anstatt einfach auf der gleichen Seite zu bleiben. Ein einfacher Umweg wäre, den Namen der HTML-Seite zu kennen und mit an die Funktion zu übergeben. Aber wie kriege ich den raus? Ich habe keine Lust die komplette URL zu zerlegen, um irgendwie drann zu kommen. Gibt es keinen JavaScript-Befehl, der einfach den aktuellen Dateinamen zurückgibt?

Opera versteht wiedermal nur Bahnhof und nimmt einen Link a la:
<a href="#" onClick="uebergabe('plus','<%=pa_katalogzeile-matnr%>','<%=pa_katalogzeile-kwmeng%>')">+</a>

überhaupt nicht an. Hat da jemand schon Erfahrungen mit gemacht? Für Tips und Tricks wäre ich sehr dankbar.

Auszug aus der js Datei:

// *************************************
// Warenkorbinhalt steuern +/-
// *************************************

function uebergabe(wert,matnr,kwmeng){
    uebergabe = location.search;
    if(uebergabe.indexOf("?")!=-1){
        if(wert == "plus"){
      location.href=uebergabe+"&pluszeile="+matnr+"&plusmenge="+kwmeng;
        } else if(wert == "minus"){
         location.href=uebergabe+"&minuszeile="+matnr+"&minusmenge="+kwmeng;
            }
        }

if(uebergabe.indexOf("?")==-1){
          if(wert == "plus"){
  location.href=uebergabe+"?&pluszeile="+matnr+"&plusmenge="+kwmeng;
 } else if(wert == "minus"){
  location.href=uebergabe+"?&minuszeile="+matnr+"&minusmenge="+kwmeng;
            }
       }

}

  1. Hi,

    Ich habe keine Lust die komplette URL zu zerlegen,

    das brauchst Du auch nicht. Erstens wäre nur der letzte Teil des Localparts nötig, und zweitens: Warum nimmst Du nicht einfach die _ganze_ URL? (Vom Searchpart abgesehen.)

    Gibt es keinen JavaScript-Befehl, der einfach den aktuellen Dateinamen zurückgibt?

    Wie sollte es den geben? Sowie Du Dich in HTTP bewegst, gibt es keine Dateien mehr.

    Opera versteht wiedermal nur Bahnhof und nimmt einen Link a la:
    <a href="#" onClick="uebergabe('plus','<%=pa_katalogzeile-matnr%>','<%=pa_katalogzeile-kwmeng%>')">+</a>
    überhaupt nicht an.

    Kein Wunder, Opera versteht ja auch kein ASP. Willst Du das nicht lieber vom Server ersetzen lassen?

    Btw, wenn Du von einem Event-Handler nicht "false" zurückliefern lässt, wird die eigentliche Event-Aktion (hier: der Linkklick) ausgeführt.

    if(uebergabe.indexOf("?")==-1){
      location.href=uebergabe+"?&pluszeile="+matnr+"&plusmenge="+kwmeng;

    Wenn in uebergabe kein Fragezeichen vorkommt, muss es noch lange nicht leer sein. Was Du hier machst, ist also falsch - wobei ich nur nebenbei darauf hinweisen möchte, dass "?&" unsinnig ist.

    Cheatah

    1. Wie sollte es den geben? Sowie Du Dich in HTTP bewegst, gibt es keine Dateien mehr.

      Genau so, wie Du dir auch den kompletten URL-String oder den search-String anzeigen lassen kannst.

      Opera versteht wiedermal nur Bahnhof und nimmt einen Link a la:
      <a href="#" onClick="uebergabe('plus','<%=pa_katalogzeile-matnr%>','<%=pa_katalogzeile-kwmeng%>')">+</a>
      überhaupt nicht an.

      Kein Wunder, Opera versteht ja auch kein ASP. Willst Du das nicht lieber vom Server ersetzen lassen?

      Du machst nur Spaß, oder? Also erstens ist das kein ASP-Code, sondern SAP-Business Server Code und zweitens wird das natürlich vom Server übersetzt. So etwas geschieht zur Laufzeit und nicht schon beim schreiben von Code.

      Btw, wenn Du von einem Event-Handler nicht "false" zurückliefern lässt, wird die eigentliche Event-Aktion (hier: der Linkklick) ausgeführt.

      if(uebergabe.indexOf("?")==-1){
        location.href=uebergabe+"?&pluszeile="+matnr+"&plusmenge="+kwmeng;

      Soll er auch. Ich brauche in diesem Fall kein false. Er prüft verschiedene Gegebenheiten und reagiert mit unterschiedlichen urls.

      Wenn in uebergabe kein Fragezeichen vorkommt, muss es noch lange nicht leer sein. Was Du hier machst, ist also falsch - wobei ich nur nebenbei darauf hinweisen möchte, dass "?&" unsinnig ist.

      Danke für die aufmunternden Worte. Der Code ist nicht falsch und funktioniert, wie erwartet. "?&" ist unschön aber kein Hinderniss.

      Am Kern des Problems sind wir sowieso vorbei. Trotzdem Danke für die Reaktion.

      1. Hi,

        Wie sollte es den geben? Sowie Du Dich in HTTP bewegst, gibt es keine Dateien mehr.
        Genau so, wie Du dir auch den kompletten URL-String oder den search-String anzeigen lassen kannst.

        was ich damit meine: Der Begriff "Datei" hat hier keine Bedeutung, und entsprechend musst Du Deine Ansichten darüber modifizieren, welche Methoden JavaScript sinnvollerweise bietet. Welche Bedeutung der Localpart der URL hat, ist außerhalb des Servers irrelevant. Den Client interessiert auch nur, wie relative URIs interpretiert werden.

        Kein Wunder, Opera versteht ja auch kein ASP. Willst Du das nicht lieber vom Server ersetzen lassen?
        Du machst nur Spaß, oder?

        Nein, absolut nicht.

        Also erstens ist das kein ASP-Code, sondern SAP-Business Server Code

        Sorry für die Fehlerkennung. SAP-Bussiness Server Code beherrscht Opera aber auch nicht.

        und zweitens wird das natürlich vom Server übersetzt.

        *Und* *warum* *sagst* *Du* *uns* *dann* *nicht,* *was* *der* *Browser* *erhält?* Es ist absolut uninteressant, was der Server irgendwann mal gesehen hat, und verhindert im Zweifel eine Fehlersuche.

        Btw, wenn Du von einem Event-Handler nicht "false" zurückliefern lässt, wird die eigentliche Event-Aktion (hier: der Linkklick) ausgeführt.
        Soll er auch. Ich brauche in diesem Fall kein false. Er prüft verschiedene Gegebenheiten und reagiert mit unterschiedlichen urls.

        Er reagiert nicht mit URLs, sondern mit der Anweisung an den Browser, die Location zu verändern. Wenn _anschließend_ die Anweisung durch den Link kommt, zu "#" zu wechseln... nun, der Browser kann pro Fenster exakt eine Ressource anzeigen.

        Wenn in uebergabe kein Fragezeichen vorkommt, muss es noch lange nicht leer sein. Was Du hier machst, ist also falsch - wobei ich nur nebenbei darauf hinweisen möchte, dass "?&" unsinnig ist.
        Danke für die aufmunternden Worte. Der Code ist nicht falsch und funktioniert, wie erwartet.

        Im Moment. Wenn sich die Anforderungen nur minimal ändern, hast Du auf einmal einen Bug, weil Du es unterlassen hast, etwas unnötiges und nur _zufällig_ richtiges zu entfernen.

        "?&" ist unschön aber kein Hinderniss.

        Richtig. Es zeigt mir aber, dass Du auf Deinen Code nicht richtig aufpasst. Du musst sorgfältiger arbeiten.

        Am Kern des Problems sind wir sowieso vorbei.

        Nein, nicht wirklich :-)

        Cheatah

        1. Da ich es aus eigener Erfahrung nicht besonders schön finde, wenn im Forum nur Fragen gepostet werden aber die Fragesteller selten ihr funktionierendes Endergebnis posten ist hier mein Ergebnis:

          *Und* *warum* *sagst* *Du* *uns* *dann* *nicht,* *was* *der* *Browser* *erhält?* Es ist absolut uninteressant, was der Server irgendwann mal gesehen hat, und verhindert im Zweifel eine Fehlersuche.

          Es war irrelevant. Ich habe lediglich meinen Source-Code gepostet. Du kannst aber auch gerne eine Int-Zahl deiner Wahl einsetzen.

          Er reagiert nicht mit URLs, sondern mit der Anweisung an den Browser, die Location zu verändern. Wenn _anschließend_ die Anweisung durch den Link kommt, zu "#" zu wechseln... nun, der Browser kann pro Fenster exakt eine Ressource anzeigen.

          Jeder Browser, ausser Opera kam damit wunderbar klar. Jetzt klappts.

          <a href="javascript:uebergabe('plus','<%=pa_katalogzeile-matnr%>','<%=pa_katalogzeile-kwmeng%>')">+</a>

          Netscape kommt nicht mit gut mit Teil-URLs klar. Er MUSS eine von den "nicht vorhandenen" Seitennamen in der Übergabe-URL haben, da er sonst DEFAULT.htm einsetzt. Ich habe es aber jetzt geändert und jetzt läuft es auch dort.

          Im Moment. Wenn sich die Anforderungen nur minimal ändern, hast Du auf einmal einen Bug, weil Du es unterlassen hast, etwas unnötiges und nur _zufällig_ richtiges zu entfernen.

          Es wird kein Bug entstehen aber da hat jeder seine eigenen Ansichten.

          "?&" ist unschön aber kein Hinderniss.

          Richtig. Es zeigt mir aber, dass Du auf Deinen Code nicht richtig aufpasst. Du musst sorgfältiger arbeiten.

          Es liegt an der Prüfung auf der Folgeseite. Aber macht ja auch nix.

          // *************************************
          // Warenkorbinhalt steuern +/-
          // *************************************

          function uebergabe(wert,matnr,kwmeng){
              uebergabe = location.href;
              if(uebergabe.indexOf("?")!=-1){
                  if(wert == "plus"){
                location.href=uebergabe+"&pluszeile="+matnr+"&plusmenge="+kwmeng;
                  } else if(wert == "minus"){
                   location.href=uebergabe+"&minuszeile="+matnr+"&minusmenge="+kwmeng;
                      }
                  }

          if(uebergabe.indexOf("?")==-1){
                    if(wert == "plus"){
            location.href=uebergabe+"?&pluszeile="+matnr+"&plusmenge="+kwmeng;
           } else if(wert == "minus"){
            location.href=uebergabe+"?&minuszeile="+matnr+"&minusmenge="+kwmeng;
                      }
                 }
          }

          1. Hallo Elmar,

            *Und* *warum* *sagst* *Du* *uns* *dann* *nicht,* *was* *der* *Browser* *erhält?* Es ist absolut uninteressant, was der Server irgendwann mal gesehen hat, und verhindert im Zweifel eine Fehlersuche.

            Es war irrelevant. Ich habe lediglich meinen Source-Code gepostet. Du kannst aber auch gerne eine Int-Zahl deiner Wahl einsetzen.

            entschuldige, aber was Du jetzt erzählst, ist wirklich Unfug. Cheatah
            hat Dich zurecht darauf aufmerksam gemacht, dass hier offenbar ein
            clientseitiges Problem vorliegt [1] und Du postest SAP-Business Server
            Code, welcher serverseitig verarbeitet wird. Der letzte Teil ist dann
            ebenfalls nicht ernstzunehmen, einen Business-Server bewegt sich mit
            Sicherheit nicht in einer Preiskategorie, in der man diese Software
            mal eben so zum Testen rumstehen hat.
            Also bitte beim nächsten Mal eine kongrete Fragestellung und auch
            Berücksichtigung von Anmerkung seitens der Forumsteilnehmer, danke.

            Viele Grüße,
            Stefan

            [1] vorausgesetzt, die versch. UA's bekommen nicht versch. Quellcode

            1. Es war irrelevant. Ich habe lediglich meinen Source-Code gepostet. Du kannst aber auch gerne eine Int-Zahl deiner Wahl einsetzen.

              entschuldige, aber was Du jetzt erzählst, ist wirklich Unfug.

              Nicht in diesem Ton.

              Cheatah

              hat Dich zurecht darauf aufmerksam gemacht, dass hier offenbar ein
              clientseitiges Problem vorliegt [1] und Du postest SAP-Business Server
              Code, welcher serverseitig verarbeitet wird. Der letzte Teil ist dann
              ebenfalls nicht ernstzunehmen, einen Business-Server bewegt sich mit
              Sicherheit nicht in einer Preiskategorie, in der man diese Software
              mal eben so zum Testen rumstehen hat.

              Nochmal zum Mitschreiben. Die Übergabewerte sind nicht relevant. Bei einer kleinen Codeanalyse dieses einfachen Scripts ist das recht schnell zu erkennen. Das Script wird natürlich Clientseitig ausgeführt und besteht aus regulärem Code.

              Also bitte beim nächsten Mal eine kongrete Fragestellung und auch
              Berücksichtigung von Anmerkung seitens der Forumsteilnehmer, danke.

              Das habe ich von Anfang an getan. Was mich traurig macht, ist das hier mit Halbwissen und Unverständnis ziemlich harte Aussagen getroffen werden.

              Elmar

              1. Hallo Elmar,

                Nochmal zum Mitschreiben. Die Übergabewerte sind nicht relevant. Bei einer kleinen Codeanalyse dieses einfachen Scripts ist das recht schnell zu erkennen.

                dann setze bitte auch irgendwelche Werte dort ein, in diesem Fall
                war es absolut nicht hilfreich und hat zu unnötiger Verwirrung bei-
                getragen, dass Du den serverseitig zu verarbeitenden Code da noch
                drinstehen hattest.
                Es muß von den Forumsteilnehmern erwartet werden können, dass der
                wirklich relevante Teil gepostet wird, also der kongrete Fehler.
                Ich weiß, dass es sehr viel extremere Fälle gibt (da werden drei
                Seiten irgendwelcher Quellcode gepostet, der mit dem eigentlichen
                Problem nix zu tun hat).

                Das habe ich von Anfang an getan. Was mich traurig macht, ist das hier mit Halbwissen und Unverständnis ziemlich harte Aussagen getroffen werden.

                offenbar beziehst Du Dich sowohl auf meine als auch auf Cheatah's
                Antworten. Nun, niemand ist unfehlbar und jeder hat auch mal einen
                schlechten Tag. Wenn Du allerdings mehrfach feststellen solltest,
                dass Dir Cheatah's Aussagen nicht kompetent genug sind, dann wäre
                vielleicht ein Wechsel des Forums sinnvoll. Ich möchte Dich schon
                jetzt darauf hinweisen, um weitere Enttäuschungen für Dich zu ver-
                meiden. Cheatah ist ohne Frage der Spitzenreiter hier im Forum,
                was sowohl die Quantität der Antworten als auch, wie ich denke,
                die Qualität angeht. OK, es gibt noch viele weitere kompetente
                Antworter, aber Cheatah Halbwissen vorzuwerfen, finde ich doch
                recht gewagt. Du solltest wissen, dass vermutlich nur weniger
                der regelmäßigen Forumsteilnehmer diese Ansicht teilen.

                Nichtsdestotrotz würde ich mich freuen, wenn Du zu einer Erhöhung
                der Antwortqualität hier im Forum beiträgst und wir in Zukunft
                den Namen Elmar öfter lesen können.

                Viele Grüße,
                Stefan

  2. Moin!

    Opera versteht wiedermal nur Bahnhof und nimmt einen Link a la:
    <a href="#" onClick="uebergabe('plus','<%=pa_katalogzeile-matnr%>','<%=pa_katalogzeile-kwmeng%>')">+</a>

    Wenn du onclick irgendwas mit der Seitenadresse (location.href) machst, dann solltest du am Ende "return false" notieren, damit der Link beim href nicht ausgeführt wird.

    Andererseits frage ich mich: Wenn du ohnehin ASP benutzt, warum generierst du nicht gleich eine ordentlichen href-URL für den Link? Du weißt beim Ausliefern der Seite ja bereits, ob diese mit Parametern aufgerufen wurde, oder nicht. Entsprechend kannst du dir das Javascript eigentlich schenken - es macht nichts, was nicht auch mit normalen, dynamisch generierten Links möglich wäre. Aber dein Warenkorb würde auch ohne Javascript funktionieren (zumindest schon mal dieser Punkt.

    - Sven Rautenberg

    1. Moin!

      Opera versteht wiedermal nur Bahnhof und nimmt einen Link a la:
      <a href="#" onClick="uebergabe('plus','<%=pa_katalogzeile-matnr%>','<%=pa_katalogzeile-kwmeng%>')">+</a>

      Wenn du onclick irgendwas mit der Seitenadresse (location.href) machst, dann solltest du am Ende "return false" notieren, damit der Link beim href nicht ausgeführt wird.

      Andererseits frage ich mich: Wenn du ohnehin ASP benutzt, warum generierst du nicht gleich eine ordentlichen href-URL für den Link? Du weißt beim Ausliefern der Seite ja bereits, ob diese mit Parametern aufgerufen wurde, oder nicht. Entsprechend kannst du dir das Javascript eigentlich schenken - es macht nichts, was nicht auch mit normalen, dynamisch generierten Links möglich wäre. Aber dein Warenkorb würde auch ohne Javascript funktionieren (zumindest schon mal dieser Punkt.

      Ich arbeite mit dem Web-Application-Server von SAP. Leider bin ich nicht besonders fit in ABAP und die Doku ist etwas löchrig. Deswegen weiß ich leider nicht, ob das hier problemlos möglich ist. Ich werde mich aber mal etwas weiter umsehen. Variablenbehandlung ist im WAS leider ziemlich umständlich...