Struppi: Perl/Javascript: HTML Banner mit auszuführendem Javascript

Beitrag lesen

So baue ichs zusammen:

$output .= '<table cellspacing=0 cellpadding=0 border=0>';
$output .= '<tr><td align=center valign=middle>';

hier kommt das Google- bzw. eBay-Zeugs aus dem anderen Posting direkt aus der DB rein.

$output .= $html;

$output .= '</td></tr>';
$output .= '</table>';

Das ist soweit ok, wobei es aber kein gültiges HTML ist.

Wozu?

Weil ich z.B. bei meinem document.write am Anfang und ende ein ' habe und das dann nicht mit den ' vom Javascript in $html klar kommt - der Browser findet dann das richtige Ende vom document.write nicht. Genauso habe ich da Klammern und Semikolon's etc.

Blödsinn.

Wieso willst du die Ausgabe unbedingt Quoten?
Dazu besteht kein Anlaß. Zumindest nicht wenn in $output ganz normaler JS Code steht.

Sie oben - das wollte ich in dem Fall, wo ich folgendes zur Ausgabe nehme:

print 'document.write('."'". $output ."'".');';

Sonst findet der Browser nicht das Ende von diesem document.write, falls vorher im anderen JS-Code auch endende Klamern sind bzw. die einfachen Hochkommata.

Das einzige was du Quoten musst, sind Hochkommas innerhalb Hochkommas oder doppelte Anführungszeichen innerhalb doppelter Anführungszeichen.

Hier nochmal das, was der Browser dann bekommt - das mittlere Zeug ist jenes eBay-Relevance JS aus dem anderen Posting:

document.write('<table cellspacing=0 cellpadding=0 border=0><tr><td align=center valign=middle>
<script type="text/javascript">document.write('<scr'+'ipt src="http://domain.de/view.asp?parameter_gekuerzt&refurl='+escape(document.location.href)+'"></scr'+'ipt>'); </script>
</td></tr></table>');

Das muss in diesem Falle in einer Zeile stehen, sobal da ein Zeilenumbruch drin ist, wirst du einen JS Fehler bekommen.

Letztlich geht das wesentlich einfacher, wenn du die here Doc Syntax verwendest
Wobei ich mich auch Frage, warum du nicht einfach einen Skript Tag verwendest statt document.write

so in etwa müßte es gehen:

my $html = <<HTML;
<script type="text/javascript">
var html = '<table cellspacing=0 cellpadding=0 border=0><tr><td align="center" valign="middle">'

  • '<script src="http://domain.de/view.asp?parameter_gekuerzt&refurl='
  • escape(document.location.href)
  • '"></script>
    document.write(html);
    </script>
    </td></tr></table>
    HTML

print $html;

Struppi.