Hallo!
Ich versuche gerade die Auswahl von BBCodes in 'mein kleines Forum' anzupassen.
Bisher generiert das PHP-Skript eine Reihe von Buttons, deren Beschriftung, Title-Attribut und BBCode (zB [b]foo[/b] für Ausgabe von <strong>foo</strong>
) mittels JavaScript gesetzt wird.
Für Benutzer ohne JavaScript sind die Buttons daher funktionslos.
Die Idee ist also, die Buttons mittels JavaScript ins Dokument zu schreiben, oder bei deaktiviertem JavaScript eine Erklärung, wie die jeweiligen BBCodes manuell zu verwenden sind.
Ich habe folgenden Test gebastelt:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<script type="text/javascript">
/* <![CDATA[ */
function Test1() {
alert("Hello World!");
}
function Test2(text) {
if (lenght(text) >= 1)
{
alert("..." + text + "...");
}
else
{
alert("call containing no text");
}
}
/* ]]> */
</script>
<title>JavaScript from PHP</title>
<style type="text/css">
html, body { margin:0; }
body {
font-size:100.01%;
padding:7px;
}
h1 { font-size:1.1em; }
p, form {
padding:10px;
border:1px solid #000;
}
</style>
</head>
<body>
<h1>Paragraph (generated by PHP)</h1>
<?php
$JavaScript = '<script type="text/javascript">/* <![CDATA[ */document.write("<p>JavaScript active.</p>");/* ]]> */</script><noscript><p>JavaScript <strong>not</strong> active.</p></noscript>';
echo $JavaScript;
?>
<h1>Form (generated by PHP)</h1>
<form id="Form" action="">
<?php
$JavaScript = '<script type="text/javascript">/* <![CDATA[ */document.write("<input type=\'button\' name=\'test1\' id=\'test1\' value=\'button 1\' title=\'information 1\' onclick=\'Test1();\' /><br />");/* ]]> */</script><noscript><p>JavaScript <strong>not</strong> active (#1).</p></noscript>';
echo $JavaScript;
?>
<?php
$JavaScript = '<script type="text/javascript">/* <![CDATA[ */document.write("<input type=\'button\' name=\'test2\' id=\'test2\' value=\'button 2\' title=\'information 2\' onclick=\'Test2(\'Hello World!\');\' /><br />");/* ]]> */</script><noscript><p>JavaScript <strong>not</strong> active (#2).</p></noscript>';
echo $JavaScript;
?>
</form>
</body>
</html>
Online hier zu finden.
Während der 1. Button (ohne Text-Übergabe) 'funktioniert', d.h. den Alert auslöst; geht der 2. (mit Text) in's Leere.
Aus den Fehlermeldungen werde ich leider nicht schlau.
JavaScript-Console: Fehler ''SyntaxError: syntax error'' [xs] in Datei ''http://www.maloer.org/jstest2.htm'', Zeile 1, Buchstabe 5.
IE: Zeile: 43, Zeichen: 1, Fehler: Syntaxfehler, Code: 0
Die gerenderten Skript-Bereiche sehen so aus:
Button 1:
<script type="text/javascript">
/* <![CDATA[ */
document.write("<input type='button' name='test1' id='test1' value='button 1' title='information 1' onclick='Test1();' /><br />");
/* ]]> */
</script>
Button 2:
<script type="text/javascript">
/* <![CDATA[ */
document.write("<input type='button' name='test2' id='test2' value='button 2' title='information 2' onclick='Test2('Hello World!');' /><br />");
/* ]]> */
</script
Aufgrund des Quellcodes denke ich, alle Backslashes korrekt für PHP maskiert zu haben; aber ich finde den Fehler bei der Übergabe des Strings an den JavaScript einfach nicht. ;-)
Irgendwelche Tipps eurerseits?
mfg Alfie