Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
13.01.2002, 17:59
Tomz



also, ich hab wieder ein problem. ich möchte mit javascript ein fenster öffnen, jedoch soll ich noch zwei parameter übergeben können, und zwar einen für ein file, das eingelesen wird, und der andere für den titel...
nun, ich hatte mal etwas mit parameterübergabe gebastelt, habs aber irgendwie versaut. nun steh ich vor einem problem.
wenn php meinen quellcode generiert hat, dann ist das hier das window open:
Quellcode:
<script language="javascript" type="text/javascript">
function fenster(Var file, Var title)
{
window.open("songviewer.php?file="+file,title,"height=600,width=200,left=200,top=50");
}
</script>

und das der aufruf:

Quellcode:
<a href="javascript:fenster("nur_dir","Nur dir")">Nur dir</a>

erkennt ihr irgend einen fehler? es funktioniert leider nicht, weiss nicht warum.

--

...denn das atombrot wird nicht ruhen bis es den letzten erwischt hat...

zum Seitenanfang zum Seitenende Profil || Suche
001
13.01.2002, 21:55
Kriz



1. Quellcode:function fenster([color="#FF0000"]Var[/color] file, [color="#FF0000"]Var[/color] title)
Wegmachen... Das Schlüsselwort var dient in Javascript nur der Deutlichmachung von Variablendeklarationen bzw. -initialisierungen. In der Parameterübergabeliste einer Funktion ist es unnütz, da JavaScript (wie PHP) typlos arbeitet.

2. Quellcode:window.open([color="#FF0000"]"songviewer.php?file="+file,title[/color],"height=600,width=200,left=200,top=50");
Mit dieser URL übergibst du übrigens nur den Dateinamen, aber nicht den Fenstertitel. Besser wäre (sofern du den Titel mit an die PHP-Datei übergeben möchtest...):
Quellcode:window.open("songviewer.php?file="+file+"&title="+title,title,"height=600,width=200,left=200,top=50");
Denk dran, daß diese Art der Datenweitergabe sich nur auf ASCII-Standard bezieht. Umlaute und Sonderzeichen wie ä,ü oder ß usw. können nur mittels einer PHP-Transformation in URL-konforme Tokens umgewandelt werden. Und das muß geschene, BEVOR du die Javascript-Funktion aufrufst.Die beiden Funktionen in PHP für's Kodieren/Dekodieren lauten dafür:

rawurldecode(string); bzw. rawurlencode(string);

und

urldecode(string) bzw. urlencode(string);

Zu bevorzugen ist rawurl...code(string), da url...code(string) veraltet ist und nicht mehr RFC1738 Normung entspricht (blablabla)...

Jetzt müßte es funzen, denn soweit ist alles i.O. mit deiner Javascript-Funktion. Ach ja, ich hoffe, du weißt, daß folgendes so in PHP geschrieben werden muß:

window.open("songviewer.php?file="+file+"&title="+title,title,"height=600,width=200,left=200,top=50");

wird in PHP zu

echo "window.open(\"songviewer.php?file=\"+file+\"&title=\"+title,title,\"height=600,width=200,left=200,top=50\");";

Cu

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)


Dieser Beitrag wurde am 13.01.2002 um 21:56 von Kriz bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
002
13.01.2002, 22:12
Tomz



das mit den \" msust ich schon bitter erfahren... ;-) ich war ne halbe stunde am debuggen, bis ich gemerkt hatte, das man " nicht einfach so in einem echo schreiben kann, aber das is schon eine weile her...

aber das script wird nicht mit echo ausgegeben. dass steht so da. im html halt...

nur der funktionsaufruf (der link, der geöffnet werden soll)und die parameter werden mit php generiert

[edit]
hmm... irgendwie scheint es nicht ganz zu klappen. bist du sicher das es mit dem
function fenster(file, title)
klappen sollte? irgendwie macht er müll. aber ein problem ist, ich sehe, das er als link unten im explorer nur "javascript:fenster(" anzeigt. was stimmt da nicht?
[2nd edit]
ich hab das problem. wie macht man bei html die escape sequenzen für " ? das ist das problem.

=> <a href="javascript:fenster("...")">

--

...denn das atombrot wird nicht ruhen bis es den letzten erwischt hat...


Dieser Beitrag wurde am 13.01.2002 um 22:25 von Tomz bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
003
14.01.2002, 07:33
Kriz



In Javascript werden die Anführungszeichen durch Hochkommata ersetzt, zumindest im direkten Zusammenhang mit HTML. Und genau datt isses (hrhr):

<a href="javascript:fenster('dir 1', 'dir 1');">...</a>

Da HTML seine Parameter sowohl ohne Anführungszeichen erkennt:

<table width=100% border=1>...

als auch mit Anführungszeichen:

<table width="100%" border="1">...

würde dein <a href="javascript:fenster("..")"> bedeuten, daß der Inhalt von href eben nur von javascript bis zum ( geht. Daher werden innerhalb von eingebetteten Javascripten alle Anführungszeichen durch Hochkommata ersetzt. In direkten Scriptdefinitionen oder separaten Scriptdateien spielt das keine Rolle, hier wird eben wieder das Anführungszeichen genommen.

Cu

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
004
14.01.2002, 15:25
Tomz



das hab ich ja selber herausgefunden. darm wollte ich wissen, auf welche art ich die " machen muss. hab mich zwar den abend durch self html durchgerackert, aber nichts gefunden...

thnx @ kriz
damit sollte es hoffentlich funzen.

[edit]
ich habe noch ein problem. irgendwie kann ich nur zusammengeschriebenes übergeben, wenn ein leerzeichen drin vorkommt, dann nimmt er es nicht an... weiss jemand vielleicht warum?

es gibt doch diese lustigen sequenzen, welche im internetexplorer oben angezeigt werden. so %20% und so. ich denke, falls ich das brauche, dann könnte ich das mit den leerzeichen machen. ich bräuchte halt nur die sequenz...
ich kuck mal ob ich was finde, wäre aber froh, falls es jemand postet, wenn er es weiss, ich habe morgen prüfungen und ich will sie nicht versauen, weil ich zuviel suche.

und btw, wie funktioniert das mit dem rawurldecode() eigentlich.

ich habe es probiert, aber es hat nichts gebracht...

--

...denn das atombrot wird nicht ruhen bis es den letzten erwischt hat...


Dieser Beitrag wurde am 14.01.2002 um 18:58 von Tomz bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
005
14.01.2002, 19:46
Kriz



Das sind urlencode() bzw. rawurlencode(), die für diese lustigen Zeichen in einer URL sorgen =)

Beispiel:
Quellcode:<?php
$string = "Hallo Trallalla und Firlefanz";
$html1 = rawurlencode($string);
$html2 = urlencode($string);
?>

Ausgabe RAWURL

Hallo%20Trallalla%20und%20Firlefanz

bzw. URL

Hallo+Trallalla+und+Firlefanz

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)


Dieser Beitrag wurde am 14.01.2002 um 19:46 von Kriz bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
14.01.2002, 20:20
Tomz



oh thanx. genau das hab ich gesucht...

--

...denn das atombrot wird nicht ruhen bis es den letzten erwischt hat...

zum Seitenanfang zum Seitenende Profil || Suche
007
14.01.2002, 20:30
Tomz



meine funktion sieht so aus:
Quellcode:
function song_line($caption,$file,$title)
{
.$file_c = rawurlencode($file);
.$title_c = rawurlencode($title);
.echo("<a href="javascript:fenster('$file_c','$title_c')">$caption</a><br>\n");
}

doch es funzt irgendwie nicht richtig mit dem encoden... hab ich nicht doch einen fehler gemacht?
ich weiss, ich bin dumm, ist aber egal...

--

...denn das atombrot wird nicht ruhen bis es den letzten erwischt hat...

zum Seitenanfang zum Seitenende Profil || Suche
008
14.01.2002, 23:45
Kriz



Quellcode:function song_line($caption,$file,$title)
{
.$file_c = rawurlencode($file);
.$title_c = rawurlencode($title);
.[color="#FF0000"]echo("<a href="javascript:fenster('$file_c','$title_c')">$caption</a><br>\n");[/color]
}

a) Erstmal braucht man bei echo keine Klammern, daß ist nur bei printf() nötig, da printf() eine Funktion ist, echo aber nicht.

b) Das rote oben muß so aussehen:
Quellcode:echo "<a href="javascript:fenster(\'$file_c\',\'$title_c\')">$caption</a><br>\n";Du hast bei den Hochkommata die PHP-Syntax nicht eingehalten: Aus ' wird in PHP \', da ' in PHP die Einleitungszeichen für ein char sind bzw. in deinem Fall die Zeichenkette vom ersten " bis zum ersten ' gehen würde, da man in PHP ja Zeichenketten entweder mit " inkl. Variablen oder mit ' exkl. Variablen schrieben kann:

Mit " und inkl. Variablen:
Quellcode:$i = 500;
echo "\$i = $i";

Mit ' und exkl. Variablen:
Quellcode:$i = 500;
echo '$i = '.$i;

Mit ' heißt also nix anderes, als dann man dann innerhalb der Zeichenkette ruhig $i schreiben darf, da dann eben nur $i ausgegeben und nicht als Variable interpretiert wird.

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)


Dieser Beitrag wurde am 14.01.2002 um 23:49 von Kriz bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
009
15.01.2002, 00:47
Tomz



hmm, hab das gleich mit dem \' ausprobiert, hat aber nicht gefunzt. wenn ich es so per php ausgebe, dann steht es im generiertem code auch mit einem backslash dort, und dass soll ja nicht sein.

ich habe gerade mit hilfe des quelltextes gesehen, dass der rawurlencode funktioniert, doch irgendwie hat er verdammt grosse probleme das script auszuführen... aber nur solang leerzeichen im titel sind... doch im quelltext steht es schon richtig mit %20 glaubich...

btw: nettes gespräch, kriz...

--

...denn das atombrot wird nicht ruhen bis es den letzten erwischt hat...

zum Seitenanfang zum Seitenende Profil || Suche
010
15.01.2002, 08:13
SonicBe@m



ehh kriz mag sein das er die klammern nicht braucht das ist aber eigentlich der stile eines programmierers ! wenn er es so macht geht es und ist es kein fehler ! ich z.b. schreibe meine echo immer echo (" dann kommt ein text der sehr gross ist und über viele zeilen geht z.b. alles was als html usw. ausgegeben wird ! naja wie auch immer");
soviel zu dem ! lass ihn das machen wenn er das so will ist sogar besser und übersichtlicher als nur ein billiges echo mein text zu schreiben mann sieht sofort wo der (befehl) anfängt und wo er aufhört ! :)

--

72410480
Love Peace And WorldCraft :D
Texture axis perpendicular to face? Never again: QuArK

zum Seitenanfang zum Seitenende Profil || Suche
011
15.01.2002, 13:02
Kriz



@SonicBe@m: Warum mehr tippen, wenn's nicht nötig ist? DAS ist der Stil der Programmierer. Beispiel an einer Stringcopy-Funktion in C++:

Umständlich, da viel Tipperei:Quellcode:void stringcopy(char* ziel, const char* quelle)
{
....int i = 0;
....while(quelle[ i ] != '\0')
....{
.........ziel[ i ] = quelle[ i ];
.........i++;
....}
....ziel[ i ] = '\0';
}

Und so geht's bei Echten Programmierern (hrhr):Quellcode:void stringcopy(char* ziel, const char* quelle)
{
....while(*ziel++ = *quelle++);
}

@Tomz: Schick mir doch mal dein PHP-Skript, eventuell sehe ich den Fehler ja dann besser.

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)


Dieser Beitrag wurde am 15.01.2002 um 13:02 von Kriz bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
012
15.01.2002, 19:55
Tomz



ok, ich mail dirs mal (noch nicht jetzt, hab keine zeit). ich schreib dir dann das ganze auch mal aus, welche funktionen gebraucht werden...

ist ein wenig unübersichtilich, aber was solls.

--

...denn das atombrot wird nicht ruhen bis es den letzten erwischt hat...

zum Seitenanfang zum Seitenende Profil || Suche