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

Beitrag lesen

Hallo Jörg,

danke erstmal für deine Antwort! ich werde beide Möglichkeiten sofort testen, ich gebe selbstredend bescheid! :)

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>";

  
Dass es daran liegt, dass das Popupfenster immer wegen dem Target überschrieben wird wusste ich gar nicht. Ich dachte, dass das nur ein Atribut ist um dem html-Teil zu sagen "mach nen Popup auf". Schande über mich :D  
  
  
  

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

>  <?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  
>   
> ~~~javascript
  

> 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:  
> ~~~php
  

>  $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

Ja, das Script wird tatsächlich in jedem Beitrag ausgeführt. Ich nahm an, es mache mehr Sinn das .js in die php-while zu legen damit das Script auch tatsächlich von jedem Beitragschreiber die Daten bekommt. Hm, so kann man sich irren -.-

Wäre es aus der Sicht besser das Javascript in den Headbereich zu legen oder irgendwo an das Ende der Seite? Ich denke, das Script kann nur dann Daten annehmen wenn sie bereits da sind. Das war auch der Grund warum es mit in die Schleife gelegt habe.

Gut, ich ändere die Fehler und gebe dann nochmals bescheid!

P.S.
Stimmt, ich habe tatsächlich vergessen die ID und den Usernamen zu escapen :D Merci