window.open - Problem bei Übergabe von Parameter an Perl-Script
SSH
- javascript
Hallo zusammen!
Ich habe folgendes Problem:
Mit window.open möchte ich einen Link in einem neuen Fenster öffnen. Bei normalen Links (z. B. "seite1.html") funzt alles. Der Link, den ich öffnen möchte, enthält aber Parameter für ein Perl-Script. Dann geht zwar das neue Fenster auf, die gewünschten Parameter wurden aber nicht richtig an mein Perl-Script übergeben.
---- fehlerhafter Ausschnitt aus dem Script - Beginn ----
F = window.open("/cgi-bin/news/news_show.pl?title=Test%20%C4%E4%D6%F6%20","Fenstername","width=400,height=400,left100,top=100,scrollbars=yes");
---- fehlerhafter Ausschnitt aus dem Script - Ende ----
Wenn ich den Link direkt über die Adresszeile des Browsers öffne, dann ist alles OK. Das Perl-Script ist es also nicht.
Wie muß ich den Link im JS-Script maskieren, damit alles richtig im Perl-Script ankommt?
Schon mal Danke im Voraus
Grüße
SSH
Hallo
Welche URL wird angezeigt wenn du dir die Info des Fensters anzeigen lässt?
Rechte Maustaste "View Page Info","info" oder so ähnlich.
gruß roox
Hallo!
.../news_show.pl?title=Test%20ÄäÖö
im Gegensatz zu
.../news_show.pl?title=Test%20%C4%E4%D6%F6
wenn ich den Link direkt über die Adresszeile im Browser öffne.
Wir kommen dem Fehler näher :-)
In der Datenbank, aus der das Perl-Scripts den Link zieht, steht der Link Hex-codiert (also "Test%20%C4%E4%D6%F6"). Wie bekomme ich das JS-Script also dazu, die Hex-Werte nicht zu interpretieren?
SSH
Hallo SSH
Bei deinem left fählt ein = (left=100 != left100)
Wenn du ' statt " dürfte javascript den HEX Code nicht mehr intepretieren.
gruß roox
Wenn du ' statt " dürfte javascript den HEX Code nicht mehr intepretieren.
Das dürfte auch nicht funktionieren:
Mein Script sieht nämlich eigentlich so aus:
---- fehlerhafter Ausschnitt aus dem Script - Beginn ----
F = window.open("/cgi-bin/news/news_show.pl?title="+Page,"Fenstername","width=400,height=400,left=100,top=100,scrollbars=yes");
---- fehlerhafter Ausschnitt aus dem Script - Ende ----
Das ganze wird dann aus der HTML-Datei so aufgerufen:
<A Href="javascript:LoadNews('Test%20%C4%E4%D6%F6')">...
Wenn ich da ' durch " ersetze, dann kommt doch der Href-Tag nicht mehr klar.
Hallo SSH
left100 != left=100
gruß roox
ps.: spitzen Name hasst du da
Hallo SSH
left100 != left=100
Jo, logisch. Hab ich vergessen hinzuschreiben. In meinem Script werden die left- und top-Positionen relativ zum parent-Fenster berechnet. Das hatte ich für das Beispiel rausgenommen.
Aber, wie gesagt:
Das Öffnen des Fensters ist in Ordnung. Nur der Link wird nicht richtig übergeben.
Der "Fenstername" war auch nur zum Testen. Nicht, daß es daran liegt, daß ich irgendein Schlüsselwort o. ä. verwende ;-)
---- fehlerhafter Ausschnitt aus dem Script - Beginn ----
F = window.open("/cgi-bin/news/news_show.pl?title=Test%20%C4%E4%D6%F6%20","Fenstername","width=400,height=400,left100,top=100,scrollbars=yes");
---- fehlerhafter Ausschnitt aus dem Script - Ende ----
Ich gehe mal davon aus, dass du es so machst:
<a href="/cgi-bin/news/news_show.pl?title=Test%20%C4%E4%D6%F6%20"
onclick="window.open(this.href , "Fenstername", "...");return false"
Klick</A>
Wie muß ich den Link im JS-Script maskieren, damit alles richtig im Perl-Script ankommt?
Die Frage ist außerdem, wie sieht dein Perl Skript aus (du benuzt CGI.pm?) und was kommt an und was sollte ankommen.
Struppi.
Hallo!
Lies dazu bitte noch meine anderen Posting:
http://forum.de.selfhtml.org/?t=58293&m=327127
http://forum.de.selfhtml.org/?t=58293&m=327122
http://forum.de.selfhtml.org/?t=58293&m=327140
Da steht das schon näher beschrieben.
CGI.pm nutze ich hierbei nicht. Ich habe eine Datenbank (flat-file) mit News darin. Über das Perl-Script wird halt der jeweilige News-Artikel aufgerufen.
Gruß
SSH
CGI.pm nutze ich hierbei nicht. Ich habe eine Datenbank (flat-file) mit News darin. Über das Perl-Script wird halt der jeweilige News-Artikel aufgerufen.
Darauf wollte cih nicht, das du es nciht so machst, dann hast einige Möglichkeiten wo dein Fehler sitzt.
sowohl die Variante die ich dir gezeigt habe wie du das Fenster aufrufst sollte Problemlos funktionieren und da ich nicht weiss wie du die CGI Parameter in Perl parsed, können natürlich auch die Fehler auftreten. Daher ist der Gebrauch von CGI.pm immer sinnvoller als irgendeine Routine zu verwenden die viellleicht manchmal funktioniert.
Struppi.
sowohl die Variante die ich dir gezeigt habe wie du das Fenster aufrufst sollte Problemlos funktionieren und da ich nicht weiss wie du die CGI Parameter in Perl parsed, können natürlich auch die Fehler auftreten. Daher ist der Gebrauch von CGI.pm immer sinnvoller als irgendeine Routine zu verwenden die viellleicht manchmal funktioniert.
Das Problem scheint hier im JS-Script zu liegen. Wenn ich mein Perl-Script über die Adresszeile des Browsers aufrufe funzt es problemlos. Wenn ich das aber über das JS-Script mache, dann kommt es zum Problem. Offenbar macht das JS-Script aus den Hex-Werten im Link schon wieder "normale" Buchstaben, und übergibt das dann an das Perl-Script.
Gruß
SSH
Das Problem scheint hier im JS-Script zu liegen. Wenn ich mein Perl-Script über die Adresszeile des Browsers aufrufe funzt es problemlos. Wenn ich das aber über das JS-Script mache, dann kommt es zum Problem. Offenbar macht das JS-Script aus den Hex-Werten im Link schon wieder "normale" Buchstaben, und übergibt das dann an das Perl-Script.
und was passiert so?
<a href="/cgi-bin/news/news_show.pl?title=Test%20%C4%E4%D6%F6%20"
onclick="window.open(this.href , "Fenstername", "...");return false"
Klick</A>
und wenn du Vermutungen hats, warum überprüfst du es nicht?
Ein einfaches alert() sollte ausreichen um zu sehen, was JS macht.
Struppi.
und was passiert so?
<a href="/cgi-bin/news/news_show.pl?title=Test%20%C4%E4%D6%F6%20"
onclick="window.open(this.href , "Fenstername", "...");return false"Klick</A>
News-Script wird mit dem richtigen Parameter geöffnet, aber nicht im neuen Fenster
und wenn du Vermutungen hats, warum überprüfst du es nicht?
Ein einfaches alert() sollte ausreichen um zu sehen, was JS macht.
...werde ich mal checken.
Wie kann ich denn nun ein JS-Script dazu veranlassen, daß es Hex-Werte im Link nicht "übersetzt"?
und was passiert so?
<a href="/cgi-bin/news/news_show.pl?title=Test%20%C4%E4%D6%F6%20"
onclick="window.open(this.href , "Fenstername", "...");return false"Klick</A>
News-Script wird mit dem richtigen Parameter geöffnet, aber nicht im neuen Fenster
Dass heißt in deiner Seite versteckt sich irgendwo ein JS Fehler aufgrund dessen das Skript gar nicht erst ausgeführt wird.
Du weißt wie du dir JS Fehler anzeigen lassen kanst?
http://glasgoogle.de
Struppi.
...
Dass heißt in deiner Seite versteckt sich irgendwo ein JS Fehler aufgrund dessen das Skript gar nicht erst ausgeführt wird.
Du weißt wie du dir JS Fehler anzeigen lassen kanst?
Jap, aber ich habe es mal mit Deinem alert-Vorschlag ausprobiert. Das hat meine Vermutung bestätigt. Deshalb habe ich obigen Fehler nicht mehr gesucht.
Alert bestätigt, daß JS beim Link die angegebenen Hex-Werte (%20, %C4, etc.) nicht als Hex-Wert übergibt, sondern erst interpretiert und dann übergibt (Leerzeichen statt %20, Ä statt %C4, etc.)
Ich suche also jetzt eine Möglichkeit, wie ich dem JS-Script mitteilen kann, das es entweder die Hex-Werte im Link (bzw. location) nicht interpretieren soll, oder aber, daß ich es irgendwie schaffe, das ganze als String zu übergeben und trozdem dann als Link aufzurufen.
Gruß
SSH
P.S. ich bin jetzt erst mal ein paar Stunden nicht online, melde mich aber auf jeden Fall.