Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Replacing document.write()s in an xhtml+xml page

I work for a company that writes software which client sites embed with < script language="JavaScript" src=..... etc. etc. We depend quite a bit on document.write to write elements out to the page. One of our clients for some reason has opted to use the content-type "application/xhtml+xml", which makes document.write() unusable in chrome.

I understand why this is, and that DOM-compliant code should create each element, set its attributes, fill it with a text node if needed, attach the text node to its parent and the parent to some page element....

but what's a good workaround that doesn't require all this junk? The write()s therein have so many elements that the resulting code would be hideous if we made nodes and fastened them together like Knex or Legos or what-have-you.

edit: Tried using CDATA, but even this line is condemned similarly by the xhtml parser on the same page as our script embed:

<script language="text/javascript"><![CDATA[document.write('hi');]]></script>
like image 756
Amalgovinus Avatar asked Sep 01 '10 00:09

Amalgovinus


1 Answers

var el = document.createElement('div');
el.innerHTML = 'What you used to document.write()';
document.body.appendChild(el);

Note that you'll need to fix the HTML to be valid XHTML, but that should be much less work than converting all the code to use DOM manipulation.

like image 127
stormsweeper Avatar answered Oct 19 '22 19:10

stormsweeper