包含 </script> 的 javascript 变量

原文 标签 javascript

我需要一点帮助。我必须创建一个包含更多 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/

相关文章:

javascript - 在反向代理模式下,如何对Fiddler进行编程以限制IP范围?

javascript - 如何在脚本中调用脚本

javascript - 使用 meta.tdAttr 的网格列渲染器工具提示

javascript - 无法调用null的方法“getElementsByTagName”

javascript - 尝试重置集合时出现主干错误

javaScript(angular) 获取每个元素的值

javascript - 表单字段值不变

javascript - 一段时间后我需要关闭一个弹出窗口

javascript - 使用 Prototype 的 $() 解析 responseXML

javascript - 如何防止 Mozilla 中的 CTRL + P 打印对话