关于“<script>”标记</script>的JS解析错误

时间:2013-09-18 06:08:09

标签: javascript html

我正在为一个小网站编写HTML和JS。当我在JS中写一些特殊的单词时,我遇到了一个问题。

以下是样本:

<script Language="javascript" >
    var template = {
                    "role":'<role name="" />',
                    "script":'<script>xxx</script>'
                   };
    ...
</script>

我发现Chrome会解析它错误。它将忽略模板声明中文件</script>之后的JS文本。

2 个答案:

答案 0 :(得分:3)

浏览器将脚本中的</script>视为脚本标记的末尾,而不是字符串。这意味着您基本上是在尝试执行此操作:

<script>
  var template = {
      "role":'<role name="" />',
      "script":'<script>xxx
</script>

这是无效的JavaScript。

为避免这种情况,您需要拆分脚本标记:

"script":'<script>xxx</sc' + 'ript>'

以便浏览器看不到</script>并正确等待您的预期结束脚本标记。

答案 1 :(得分:1)

应该是这样的:

<script type="text/javascript" >

        var template = {
                           "role":'<role name="" />',
                           "script":"<sc"+"ript> type='text/javascript'>xxx"+"</sc"+"ript>"
                       };
    ......
    ......

</script>