mrjerk: Javascript übernimmt richtige Variable gibt sie aber falsch aus

Beitrag lesen

Hallo,
<a class="pnlink" target="popup" onclick="window.open('','popup','scrollbars=yes,width=480,height=550,left=850,top=80')" href="hier wäre die url">PN</a>

Bei dieser Variante verzichte ich auf ein weiteres Javascript. Problem dabei ist, dass man damit immer nur EIN Fenster offen haben kann, sofern man ein anderen User anschreiben will wird das aktuelle Fenster reloaded und man schreibt da weiter. Das ist natürlich nicht im Sinn des Erfinders...

Dein Fenstername ist immer gleich "popup", deswegen wird der Inhalt auch immer im selben Fenster geladen.
Wenn Du mehrere Fenster öffnen willst, musst Du nur dafür sorgen, dass sie jeweils unterschiedlich heissen. Du könntest z.b. die User-ID des jeweiligen Users anhängen:

  
$userId = ... (Irgendwie die User-ID ermitteln)... ;  
echo "<a class=\"pnlink\" target=\"popup".$userId."\" onclick=\"window.open('','popup','scrollbars=yes,width=480,height=550,left=850,top=80')\" href=\"hier wäre die url\">PN</a>";  

Das sollte funktionieren.

Zu Deiner anderen Lösung:
Ich nehme an, Du führst Deinen Code-Block

  
 <?php  
          header("Content-type: application/javascript");  
  
          include_once('../include/url.php');  
  
          $to_user = $_GET['to'];  
          $to_id = $_GET['id'];  
          $_send = "/pn/to-".$to_user."";  
 ?>  
 var username = '<?php echo $to_user;?>';  
 var userid = '<?php echo $to_id;?>';  
  
 function pn(){  
   window.open("<?php echo $_send;?>", "", "scrollbars=yes,width=500,height=550,left=850,top=80");  
 }  

mehrfach hintereinander aus, sehe ich das richtig? Also Du hast irgendwie sowas in Deiner Seite:

  
 ...  
 var username = 'Peter';  
 var userid = '4711';  
  
 function pn(){  
   window.open("/pn/to-Peter", "", "scrollbars=yes,width=500,height=550,left=850,top=80");  
 }  
  
 var username = 'Paul';  
 var userid = '4712';  
  
 function pn(){  
   window.open("/pn/to-Paul", "", "scrollbars=yes,width=500,height=550,left=850,top=80");  
 }  
...  

In diesem Fall hast Du das Problem, dass Deine "pn()"-Funktion jedesmal überschrieben wird. Du erzeugst zwar zunächst eine Funktion "pn()" für den user "Peter", aber im nächsten Moment wird sie (aus JavaScript-Sicht) durch eine Funktion für den User "Paul" ersetzt.

Sinnvoll wäre es, Deine PN-Funktion nur einmal in der Seite zu definieren. Wenn Du sie so wie oben beschreiben verwenden willst, benötigt sie noch zwei Parameter, username und userid

  
function pn(username, userid) {  
   window.open("/pn/to-"+username, "", "scrollbars=yes,width=500,height=550,left=850,top=80");  

Jetzt kannst Du in der Schleife über Deine Posts gehen und jedesmal die entsprechende Funktion aufrufen:

  
<a class="pnlink" href="javascript:pn('".$to_user."', '".$to_id."')">PN</a>  

Das sollte gehen (alles ohne Gewähr). Hoffe das hilft Dir weiter.

Viele Grüße,
Jörg

PS:

  
 $to_user = $_GET['to'];  
 $to_id = $_GET['id'];  
 $_send = "/pn/to-".$to_user."";  

Grundsätzlich aufpassen, wenn Du PHP Variablen direkt aus dem GET- oder POST-String entnimmst und diese 1:1 in den Output schreibst! Bedenke, dass bösillige Menschen Dir  beliebige Parameter für Dein "to" und "id" unterjubeln können. Sofern irgendwie möglich, immer escapen und validieren.

Viele Grüße,
Jörg