为什么验证js字符串中的</ script>标记

yil*_*yin 2 javascript

我有以下页面

<html>
<head>
    <script type="text/javascript" src="e01.js"></script>
</head>
<body>
<script type="text/javascript">
var obj={someHTML: "<script>alert('a');</script>rest of the html",  
               someOtherAttribute:"some value"};
    alert(obj.someHTML);
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

在我的对象的someHTML属性中,我有</script>一个字符串中的标记.但是浏览器将其读作实际的关闭标记并关闭脚本元素.这里有什么我想念的吗?(用ff和chrome试过)

ken*_*ytm 5

HTML在之前解析并独立于Javascript.当前的浏览器行为是,一旦<script>找到打开的标签,浏览器将切换到"脚本数据状态"并将所有后续数据解释为脚本,直到</script>找到a.

</script>检测并不重要-一个JS字符串,一个JS评论,CDATA节,甚至HTML注释里面.

您需要使字符串看起来不像</script>HTML解析器.最简单的方法就是<\/script>@Daniel的答案一样写.