我需要一些帮助。我必须创建一个包含更多javascript的javascript字符串,然后将其写入父窗口中的div标签。代码如下:
<script language="javascript" type="text/javascript">
var jstr2 = '';
jstr2 += '<script language="javascript">\n';
jstr2 += 'function doPagingProducts(str) {\n';
jstr2 += 'document.frmPagingProducts.PG.value = str\;\n';
jstr2 += 'document.frmPagingProducts.submit()\;\n';
jstr2 += 'return false\;\n';
jstr2 += '}\n';
jstr2 += '</script>\n';
jstr2 += '\n';
</script>
然而,创建的字符串中的结束脚本标记实际上关闭了javascript,我得到错误,例如:
Error: unterminated string literal
Line: 135, Column: 9 ( The </script> line before the end of the string.)
Source Code:
jstr2 += '
有什么方法可以防止这个问题..?
非常感谢你的帮助。
最诚挚的问候, 保罗
编辑我终于通过从javascript字符串中提取最终</script>
来解决此问题。我添加了脚本显示的结束标记。它凌乱,但它的工作原理。非常感谢您的所有评论。
答案 0 :(得分:18)
SCRIPT 标记是内容不可知的,因此解析器只是在内容中运行,直到找到 / SCRIPT 序列。如果是这样,它会将找到的内容传递给JS环境进行评估。这会为您提供未终止的文字错误,因为发送的内容会在 / SCRIPT 开始的位置结束。 (没有为JS解析器找到终止引号)。
使用反斜杠转义斜杠
jstr2 += "<\/script>";
或其他一些解决方法在这里打破了序列中的触发点并解决了这个问题(但仍然留下了一些非常可疑的代码)。
答案 1 :(得分:6)
将其写为:
jstr2 += '<\/script>\n';
答案 2 :(得分:4)
你必须拆分字符串:
jstr2 += '<' + '/script>\n';
最好在脚本中注释掉所有内容:
<script type="text/javascript">
<!--//
// your code here
//-->
</script>
或在HTML中:
<script type="text/javascript">
//<![CDATA[
// your code here
//]]>
</script>
或者在XHTML中: