javascripthtmlstringescapingscript-element

Why do I get an error when a string literal contains "</script>"?


I'm getting an "unterminated string literal" Javascript error with this code:

var test = '<script type="text/javascript">var s = document.createElement(\'SCRIPT\');</script></div>'; 

What am I doing wrong here? I'm escaping the single quotes, but it doesn't seem to make a difference. However, this code does work:

var test = 'var s = document.createElement(\'SCRIPT\');</div>';

What would the difference be? I must be missing something here.


Solution

  • Break up that script tag the old-school way

    var test = '<scr'+'ipt type="text/javascript">var s = document.createElement(\'SCRIPT\');</scr'+'ipt></div>';