SSH: Hex-Werte in Link nicht interpretiert übergeben

Hallo!

Ich öffne mit JS ein neues Fenster. In diesem Fenster soll etwas aus einem Perl-Script ausgegeben werden.

--- Auschnitt aus dem JS-Script - Anfang ---

F = window.open("/cgi-bin/news/news_show.pl?title="+Page,"News","width=400,height=400,left=100,top=100,scrollbars=yes");

--- Auschnitt aus dem JS-Script - Ende ---

In die Variable "Page" setze ich jetzt z. B. "Test%20%C4%E4%D6%F6" (<A Href="javascript:LoadNews('Test%20%C4%E4%D6%F6')">...) ein.

Jetzt zum Problem:
Das JS-Script interpretiert beim Öffnen des Fensters die Hex-Werte im Link (also Leerzeichen statt %20, Ä statt %C4%, ...) und versucht dann damit den Link zu öffnen. Mein Perl-Script benötigt aber unbedingt die Hex-Werte; ansonsten findet es den jeweiligen Artikel logischer Weise nicht.

Wie kann ich mein JS-Script dazu veranlassen, explizit die gewünschten Hex-Werte zu übergeben/zu verwenden?

Danke im Voraus

Grüße

SSH

  1. F = window.open("/cgi-bin/news/news_show.pl?title="+Page,"News","width=400,height=400,left=100,top=100,scrollbars=yes");

    Das du damit surfer die JS abschalten (müssen) von der Nutzung deiner Seite ausschliesst ist dir klar?

    In die Variable "Page" setze ich jetzt z. B. "Test%20%C4%E4%D6%F6" (<A Href="javascript:LoadNews('Test%20%C4%E4%D6%F6')">...) ein.

    Mittlerweile is mir klar, du suchst wahrscheinlichhttp://www.netzwelt.com/selfhtml/javascript/objekte/unabhaengig.htm#encode_uri

    Irgendwie ist mir aber nicht trotz allem nicht klar was du machst.
    Bei mir funktioniert das folgende wie gewünscht:
    function test(a)
    {
        alert(a);
    }
    test('%A0');

    kann es sein, das du uns irgendwas anderes zeigst und nicht der JS Code der im Browser ankommt?

    Struppi.

    P.S. nach wie vor empfehle ich dir, Serverseitig das Modul CGI einzusetzten, das dir nicht nur diese schmutzige Arbeit abnimmt (und sie vor allem besser macht als die meisten anderen Programme) sondern dir rund um CGI Programme Dutzende von Erleichterungen bietet und das in einem Modul, das seit Jahren Millionenfach erprobt und im Einsatz ist .

    1. Das du damit surfer die JS abschalten (müssen) von der Nutzung deiner Seite ausschliesst ist dir klar?

      Jo, ist es. Aber manchmal ist halt das Popup-Fenster die beste Lösung. Außerdem bin ich ohnehin dafür, daß man die "moderne" Technik einsetzen sollte. Wenn wir heute noch mit dem "HTML-Browser" von 1990 abeiten würden, dann sähen die Websites aber langweilig aus.
      JS, Java und sogar ActiveX haben schon ihre Berechtigung und sind sinvoll. Evtl. Sicherheitsrisiken müssen halt von den jeweiligen Entwicklern behoben werden - wie bei jedem anderen Programm auch.

      Dazu gibt es auch andere Ansichten - das ist mir durchaus bewußt. Das o. a. ist MEINE Meinung. Wer auch immer das ließt. Bitte brecht jetzt keine Diskussion darüber vom Zaun.

      Mittlerweile is mir klar, du suchst wahrscheinlichhttp://www.netzwelt.com/selfhtml/javascript/objekte/unabhaengig.htm#encode_uri

      Perfekt! Genau die Seite habe ich gesucht. encodeUri war es nicht (mein Link war ja schon codiert), aber ich habe jetzt mit "escape" eine Lösung gefunden.

      P.S. nach wie vor empfehle ich dir, Serverseitig das Modul CGI einzusetzten, das dir nicht nur diese schmutzige Arbeit abnimmt (und sie vor allem besser macht als die meisten anderen Programme) sondern dir rund um CGI Programme Dutzende von Erleichterungen bietet und das in einem Modul, das seit Jahren Millionenfach erprobt und im Einsatz ist .

      Das Perl-Script stammt noch aus der Perl4-Zeit. Außerdem nutze ich Perl nur selten und habe mich deshalb noch nicht so intensiv mit den Modulen (u. a. CGI.pm) beschäftigt.

      Danke für die Lösung.

      Gruß

      SSH

      1. Hallo,

        Das du damit surfer die JS abschalten (müssen) von der Nutzung deiner Seite ausschliesst ist dir klar?

        Jo, ist es. Aber manchmal ist halt das Popup-Fenster die beste Lösung.

        Darum geht es nicht. Hyperlinks, die Popup-Fenster öffnen, können auch bei deaktiviertem/nicht verfügbarem JavaScript voll funktionsfähig sein und die Inhalte können trotzdem zugänglich bleiben. Siehe mein anderes Posting.

        Mathias

      2. Jo, ist es. Aber manchmal ist halt das Popup-Fenster die beste Lösung. Außerdem bin ich ohnehin dafür, daß man die "moderne" Technik einsetzen sollte. Wenn wir heute noch mit dem "HTML-Browser" von 1990 abeiten würden, dann sähen die Websites aber langweilig aus.
        JS, Java und sogar ActiveX haben schon ihre Berechtigung und sind sinvoll. Evtl. Sicherheitsrisiken müssen halt von den jeweiligen Entwicklern behoben werden - wie bei jedem anderen Programm auch.

        Ich hab auf der Arbeit ein NN 3. der ohne Problem popups aufmacht. Es sind eher die Browser von 2003 die damit Problem haben.

        Du sagst  du schließt bewußt, weil du irgendwie denkst das wäre fortschrittlich, Nutzer aus, die bewußt einen Browser ensetzten, der am besten den Gegebenheiten des Internes angepaßt ist oder die die eben bewußt sicherere surfen wollen oder müssen (Firmenfirewalls).

        Darüber hinaus wäre es ein leichtes Links, die aus welchen Gründen auch immer als Popups aufgehen sollen, so zu gestalten das sie auch noch ohne JS funktionieren.

        Daneben sollte die aber auch klar sein, dass mttlerweile die meisten User und vor allem unbedarftere, aufgehende Fenster sofort als Werbung einordnen und i.d.R. ohne einen Blick drauf zu werfen schließen. Was angesichts der Popupflut (so sie den noch existiert, ich benutzt seit einigen Jahren Webwasher) aber auch kein Wunder ist.

        Ich hab hier nie was gegen irgendwelche Aktiven Inhalte gesagt, wobei ich die Aussage, ohne wäre das Internet langweiliger, für humbug halte, da Informationen nach wie vor am besten in puren HTML dargestellt werden kann und die meisten Benutzer suchen informationen (der Erfolg von google vor vier Jahren basierte anfänglich ganz allein auf deren einfach und spartanische Erscheinung).

        Aktive Inhalte, wie auch immer ob Flash, Java oder sonst was, sind ein Mehrwert, der für Anwendungsähnliche Internetseiten absolut ein muss ist. aber in der Regel lediglich als Werkzeug benutzt wird Werbung noch aufdringlicher zu machen, als sie sowieso schon ist. Das ist aber das gute Recht der Werbeindustrie, hat nur wenig mit dem Benutzen des Internets zu tun.

        Struppi.

    2. Hallo Struppi und SSH,

      In die Variable "Page" setze ich jetzt z. B. "Test%20%C4%E4%D6%F6" (<A Href="javascript:LoadNews('Test%20%C4%E4%D6%F6')">...) ein.

      Bei mir funktioniert das folgende wie gewünscht:
      function test(a)
      {
          alert(a);
      }
      test('%A0');

      <a href="javascript:alert('%C4')">bla</a> gibt im MSIE 6 »Ä« aus. Manche %xx kodierte Zeichen aus dem Query String werden in URLs offenbar intern umgesetzt (siehe auch Statusleiste, <a href="?%C4%E4%D6%F6">...</a> wird dort als ...?ÄäÖö angezeigt). Das scheint bei normalen URLs kein Problem zu sein, da MSIE sie beim Anwählen des Links wieder kodiert. Bei <a href="?%C4%E4%D6%F6=%C4%E4%D6%F6">...</a> stimmt also alles, der Query String wird exakt so übertragen. Hingegen bei <a href="javascript:window.location.href='?%C4%E4%D6%F6';">bla</a> o.ä. wird letztlich ?\xc4\xe4\xd6\xf6 an den Server gesendet.

      Das könnte man umgehen, indem man die Ziel-URL ganz normal in das href-Attribut schreibt und den Popupkram über onclick löst, dann hätte man gleich zwei Fliegen mit einer Klappe geschlagen:
      <a href="/cgi-bin/news/news_show.pl?title=Test%20%C4%E4%D6%F6" onclick="return LoadNews(this.href)">...</a>
      beispielsweise mit
      function LoadNews (url) {
       var fenster=window.open(url, 'news', 'width=400,height=400,scrollbars=yes');
       fenster.focus();
       return false;
      }
      Dann würde MSIE den Query String eins zu eins senden und das Script sollte den GET-Parameter problemlos entgegennehmen können.

      Mathias

  2. Hi!

    Jetzt zum Problem:
    Das JS-Script interpretiert beim Öffnen des Fensters die Hex-Werte im Link (also Leerzeichen statt %20, Ä statt %C4%, ...) und versucht dann damit den Link zu öffnen. Mein Perl-Script benötigt aber unbedingt die Hex-Werte; ansonsten findet es den jeweiligen Artikel logischer Weise nicht.

    Passiert das mit allen Browsern oder nur mit manchen?

    So long

    --
    "Microsoft ist über die Probleme informiert, hat aber noch nicht reagiert."
    "Der Patch %s, der das Problem %s beheben sollte, funktioniert offenbar nicht."
    "Wann ein Update verfügbar sein wird, ist nicht bekannt."
        (Textbausteine der Heise-Newsticker-Redaktion)
    1. Passiert das mit allen Browsern oder nur mit manchen?

      Ich habs bisher nur mit dem IE ausprobiert.

      Problem ist mitlerweile gelöst. Trotzdem Danke.

      Gruß

      SSH