Re: PHP DOM XHTML - let me set my own javascript from code
| From: | Rob | Date: | Wed, 19 Oct 2005 11:42:20 +0000 |
| Subject: | Re: PHP DOM XHTML - let me set my own javascript from code | ||
| References: | 1 | Groups: | php.general php.general |
| Request: | Send a blank email to php-general+get-224319@lists.php.net to get a copy of this message | ||
Petr Smith wrote:
but it encloses it to CDATA section automatically like this: <script type="text/javascript" language="Javascript"><![CDATA[alert('ddd');]]></script> but I need it like this (because otherwise the javascript don't work): <script type="text/javascript" language="Javascript"> //<![CDATA[ alert('ddd'); //]]> </script>First, script was using some bogus method names. Secondly, you try to do anything like the following (which do work)? $html = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n".
" \n". "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n"."<head>\n" .
" <script type=\"text/javascript\" language=\"Javascript\" />\n" .
"</head>\n" .
"<body>hello\n" .
"</body>\n" .
"</html>";
$dom = new DomDocument();
$dom->preserveWhiteSpace = true;
$dom->loadXML($html);
$params = $dom->getElementsByTagName('script');
foreach ($params as $param) {
$dat = $dom->createTextNode("\n//");
$param->appendChild($dat);
$dat = $dom->createCDATASection("\n\nalert('ddd');\n\n//");
$param->appendChild($dat);
$dat = $dom->createTextNode("\n");
$param->appendChild($dat);
}
echo $dom->saveXML();
Could also do it using <!-- --> through a comment node (following adds some linefeeds too):
foreach ($params as $param) {
$dat = $dom->createTextNode("\n");
$param->appendChild($dat);
$dat = $dom->createComment("\n\nalert('ddd');\n\n");
$param->appendChild($dat);
$dat = $dom->createTextNode("\n");
$param->appendChild($dat);
}