Beitrag von Nick (66 Beiträge) am Freitag, 4.Januar.2002, 14:58.
HÜÜÜÜLFE! Sch... Javascript!?
HÜÜÜLFE!
Bisher wurde die URL einwandfrei an das neu öffnende Fenster übertragen.
Seit ich aber das fenster über Javascript öffnen lasse, wird die URL (z.B.: http://www.vitaminic.co.uk/cgi-php/get_file.php3?modo=1%26bid=88645 ) zerstückelt (in http://www.vitaminic.co.uk/cgi-php/get_file.php3?modo=1)!
Mein altes Template beinhaltete u.a.:
<loop code=perl db=my_db>
out "<b><a href=http://baseportal.de/cgi-bin/baseportal.pl?htx=/Nick_Mash/counter&urlgo=";
out convert_url($Download_Now);
out <<EOF;
&downlId=$_id target=_blank>$Title</a></b><br><br>
EOF
</loop>
Mein neues (mit javascript):
<loop code=perl db=my_db>
$url=convert_url($Download_Now);
out <<EOF;
<b><a href="javascript:auf('http://baseportal.de/cgi-bin/baseportal.pl?htx=/nicky/counter&urlgo=$url&downlId=$_id')">$Title</a></b><br><br>
EOF
</loop>
Warum wird hier die URL zerstückelt??
Antworten
Beitrag von Jurenda (305 Beiträge) am Freitag, 4.Januar.2002, 16:29.
Re: HÜÜÜÜLFE! Sch... Javascript!?
Antworten
Beitrag von Jurenda (305 Beiträge) am Freitag, 4.Januar.2002, 16:36.
Re: HÜÜÜÜLFE! Sch... Javascript!?
Antworten
Beitrag von Nick (66 Beiträge) am Freitag, 4.Januar.2002, 17:02.
Re: HÜÜÜÜLFE! Sch... Javascript!?
Antworten
Beitrag von Jurenda (305 Beiträge) am Freitag, 4.Januar.2002, 17:23.
Re: HÜÜÜÜLFE! Sch... Javascript!?
Das mußt jetzt genauer erklären.
Es funktionieren bei mir beide Links!
Ich hab Deinen Sorcecode ausprobiert und das geht auch bei mur in einem eigenen Template!
Whats wrong?
Gruß Jurenda
Antworten
Beitrag von Nick (66 Beiträge) am Samstag, 5.Januar.2002, 17:29.
Re: HÜÜÜÜLFE! Sch... Javascript!?
Antworten
Beitrag von Jurenda (305 Beiträge) am Sonntag, 6.Januar.2002, 11:29.
Re: HÜÜÜÜLFE! Sch... Javascript!?
Ohne, das ich jetzt einen Test durchgeführt habe:
Ich vermute mal, daß Javascript Dein %26 wieder in ein & converdiert und dann weitergibt.
Bleibst Du dabei, dann mußte in Deinem aufgerufenen Zählertemplate (Zwischentemplate) Du einfach schreiben: "...get_file.php3?modo=$mode&bid=$bid"
Solltest Du jedoch Deine weiteren Parameter wie z.B. bid= nicht kennen, dann würde ich folgendes testen:
Wie legt man einen Metazeichen-Konverter aufs Kreuz =>
Rufe deine Seite auf mit http://www.vitaminic.co.uk/cgi-php/get_file.php3?modo=1%2526bid=88645
Dadurch wird das Javascript Dein %25 in ein %-Zeichen umwandeln und in folge beim window.open im Link drinnenstehen: ...modo=1%26bid=88645
Gruß Jurenda
Antworten
Beitrag von Jurenda (305 Beiträge) am Sonntag, 6.Januar.2002, 19:36.
Re: HÜÜÜÜLFE! Sch... Javascript!? NEIN => Sch...IExplorer!
Ich bin derzeit mit einem ähnlichen Problem beschäftigt und hab mir das ganze mal ganz genau angesehen!
Uff, halber Tag nur gestaunt über den sch...IE!
Ursache Deines Problems ist NICHT Javascript, sondern der Internet Explorer von diesem scheiß M$!
Wenn Du Dein Problem mit dem Netscape betrachtest wirst Du feststellen, das es dort PROBLEMLOS funktioniert.
Bei M$ wandelt das window.open() die Sonderzeichen um (NS macht das richtigerweise nicht!). Und das ganze passiert deshalb, weil Du in Deiner URL 2 mal ein "?" hast. M$'s window.open() fügt leider nach dem 2. ? scheinbar ein & ein. Dadurch wird auch Dein Parameter urlgo= nur bis zum ? gefüllt. Dafür gibt es weitere Parameter modo= und eventuell sogar bib=.
Durch Verwendung von %26 bzw. %2526 kannst Du M$ davon überzeugen, das ganze korrekt zu konvertieren, aber es scheitert beim 2. ? und ausserdem funktioniert es nicht mehr mit dem Netscape!
Für die Problematik gibts jetzt 2 Lösungen, um stabil und unabhängig zu werden.
Lösung 1):
========
Du schreibst Dir eine Funktion pack_url, die Du dann zum Beispiel so in ein out "urlgo=".pack_url($urlgo) packst.
Diese Funktion konvertiert eindeutig Deinen kompletten String mit allen darin enthaltenen Sonderzeichen in eine Zeichenfolge bestehnd ausschließlich aus Buchstaben.
Danach brauchst Du eine 2. Funktion, die dann diese kodierte Zeichenfolge wieder in den ursprünglichen String zurückkonvertiert. Aufzurufen mit z.B.:
$urlgo = unpack_url($urlgo);
Diese sicher elegante, aber aufwendige Lösung ist leider gescheitert, weil BASEPORTAL die Perl-Funktion pack abgedreht hat. Alle anderen Möglichkeiten von Bit und Byte-Vertschiebereien hab ich mir jetzt nicht überlegt, da es mit der Hand programmiert recht aufwendig ist. Aber vielleicht beherrscht das jemand besser als ich und schreibt eine entsprechende Funktion, die stabil und geräteunabhängig ist. Diese Funktion müßte dann aber auch als Javascript verfügbar sein!
Lösung 2):
========
Du verzichtest auf Deine Sonderzeichen und baust Deinen Url-Aufruf nur mit einem (!) ? und dann nurmehr mit lauter &-Symbolen. Im aufgerufenen Template bastelst Du Dir dann aus den übergebenen Parametern (stehen ja in %_get) Deinen ursprünglich gewünschten Url zusammen. Das dazu notwendige Progi schaut so aus:
<perl>
%param = %_get;
delete $param{htx};
delete $param{downlId};
$urlgo = delete $param{urlgo};
for (values %param) { $_ = '='.$_.'&'; }
$urlgo = $urlgo.'?'.join("", %param);
chop($urlgo);
</perl>
Dabei werden in den ersten beiden delete-Zeilen jene Parameter rausgeschmissen, die Dein Zwischentemplate zur Steuerung benötigt. Sollten da noch weitere Parameter dazukommen, mußt Du die da natürlich noch eintragen. Im 3. delete kommt der Parameter urlgo= in die entsprechende Variable. Der Rest in %param sind jetzt alles Parameter, die an unser $urlgo drangehängt werden müssen.
Diese Geschichte funktioniert sowohl als Link als auch als window.open()!
Zum Ausprobieren hab ich mir ein Testtemplate geschrieben. Dazu der Link:
http://baseportal.de/cgi-bin/baseportal.pl?htx=/direkt/problems/metasymbol
Dort findest Du auch gleich den Quelltext zum Anschauen.
Gruß Jurenda
PS.: Ah, bevor ichs vergesse. In einem der letzten Antworten hab' einigen Mist verzapft, aber ich hab da dazugelernt! In den Urls schreib bitte kein & sondern lediglich ganz normal ein &-Symbol! Im Testtemplate ist's auch so.
Antworten
Beitrag von Nick (66 Beiträge) am Montag, 7.Januar.2002, 09:48.
Re: HÜÜÜÜLFE! --> HUT AB!
hallo Jurenda,
da fehlen mir ja die Worte! Hab's erst heute gelesen, und werde mich jetzt erstmal damit beschäftigen müssen - ist alles noch relativ neu für mich! Auf jeden Fall vielen, vielen Dank für Deinen Support - da werde ich wohl der Danksagung an Sander noch was hinzufügen müssen ;-) (http://www.rockabillymp3.com)
Grüße aus Düsseldorf
Nick
Antworten