我需要一点帮助。我必须创建一个包含更多 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 += '
有什么办法可以避免这个问题......?
非常感谢您的帮助。
最好的问候, 保罗
编辑 我终于通过提取最后的 </script>
解决了这个问题来自 javascript 字符串。我在脚本显示的地方添加了一个结束标记。它很乱,但它有效。非常感谢您的所有评论。
最佳答案
SCRIPT 标签与内容无关,因此解析器只会不断运行内容,直到找到 /SCRIPT 序列。当它这样做时,它会将找到的内容传递给 JS 环境进行评估。这给你带来了未终止的文字错误,因为发送的内容在你的 /SCRIPT 开始的地方结束。 (没有找到 JS 解析器的终止引号)。
用反斜杠转义斜杠
jstr2 += "<\/script>";
或其他一些变通方法会破坏此处序列中的触发点并解决此问题(但仍然会给您留下一些非常可疑的代码)。
关于包含 </script> 的 javascript 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4404679/