PHP generierter Text per Javascript window.open()

Begonnen von sidewind, 04 April 2003, 11:20:15

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

sidewind

Hi Community,

hab schon wieder mal einen "Hänger" bei dem ich einfach nicht weiterkomm.

folgendes prob

hab eine funktion die mir einen text der html codes enthält generiert

 
function generatetext()
{
$text = "<table>blablabla";
$text .= "usw...</table>";
 

in dieser funktion möchte ich werte in einem neuen fenste anzeigen. der inhalt des bestehenden fensters soll nicht verändert werden .
dazu füge ich am ende der funktion ein:

  echo "<a href=\"javascript:window.open(\"admin.php?op=JSWindowOpen&text=$text\",\"Fenster\")\">"._MOREINFO."</a>";
 

wird jetzt die funktion ausgeführt interpretiert mir der browser den html code in der $text variable. sprich das ganze scheitert.

ich hab jetzt schonmal versucht einen layer (<div></div>) zu gestalten und diesen dann mit dem link anzuzeigen sprich style.visibility = "visible" zu setzen. das funktiionert auch.  da der layer aber am anfang unsichtbar ist (visibility:hidden) ensteht ein leerraum in der seite . das schaut leider recht doof aus. lieber wär mir die popup lösung. aber ich bekomms einfach nicht hin..

ich brauche für die generierung des textes leider spezifische arrays , sprich ich kann nicht einfach ne funktion nehmen die ich ohne die textvariable aufruf..

weiß jemand von euch ne lösung?

*verzweifelt* :exclam:
dankeschön schonmal im voraus



[Editiert am 4/4/2003 von sidewind]

[Editiert am 4/4/2003 von sidewind]

jubilee

Hmmmm....
warum sollte der Browser denn die variable auswerten ?
Die wird doch an admin.php übergeben.
???
Hast Du dir das Java-Script schon mal genauer angesehen.
Ich denke der Fehler könnte da schon passieren. Evt geht das mit den übergebenen Werten nicht richtig um.
Bzw. wie sieht denn die Funktion JSWindowOpen, die Du in
der admin.php aufrufst ?
MfG
jubilee

sidewind

@Admin Jubilee

die javascript funktion window.open ist ein fester bestandteil von js. sprich nicht selbst geschrieben

der html quelltext im browser lautet

 

<a href="javascript:window.open("admin.php?op=JSWindowOpen&text=<table>sfsafsfasf.....</table>","Fenster")">MOREINFO</a>


und genau dieser html code wird einfach interpretiert. sprich der browser fängt einfach an eine tabelle zu erzeugen...

die funktion JSOpenWindow wird in den select.case im admin\case eingebunden:

 
case "JSWindowOpen":
echo $text;
break;
 

macht eigentlich nix anderes als den text auszugeben..

hier gibts noch mehr infos zu window.open funktion:
http://selfhtml.teamone.de/javascript/objekte/window.htm#open

ich hoffe hier hat einer schonmal das prob gehabt..

Andi

Vermute, dass sich die Anführungszeichen ins Gehege kommen.

Verwende mal im JS-Aufruf innerhalb des a-Tags einfache Anführungszeichen.

  <a href="javascript:window.open('admin.php?op=JSWindowOpen&text=<table>sfsafsfasf.....</table>','Fenster')">MOREINFO</a>

schön´s Grüssle, Andi

sidewind

Danke Andi.

Leider hat das nichts genützt.
Man müsste den text irgendwie kaschieren , damit der browser ihn nicht als html code interpetiert...

hier mal der fehler in farbe:
 

Andi

ach so, mistverständnis....
Dachte das neue Fenster wird schon garnicht angezeigt. Wer lesen kann ist klar im Vorteil :(

Wenn Du den übergebenen HTML-Quelltext mit base64 codierst müsste es gehen.


$text = "<table>........</table>";
$text = base64_encode($text);
echo "<a href=\"javascript:window.open('admin.php?op=JSWindowOpen&text=$text','Fenster')\">"._MOREINFO."</a>";


in der aufgerufenen Funktion dann:


$text = base64_decode($_GET["text"]);
echo $text;
schön´s Grüssle, Andi