javascript - 为什么要验证 js 字符串中的 </script> 标签

标签 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>

在我的对象的 someHTML 属性中我有 </script>字符串中的标记。但是浏览器将其读取为实际的关闭标记并关闭脚本元素。我在这里缺少什么吗? (在 ff 和 chrome 中试过)

最佳答案

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

哪里</script>被检测到并不重要——在 JS 字符串、JS 注释、CDATA 部分,甚至 HTML 注释中。

你需要让字符串看起来不像</script>到 HTML 解析器。最简单的方法是写<\/script>@Daniel的答案。

关于javascript - 为什么要验证 js 字符串中的 &lt;/script&gt; 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3509818/

相关文章:

javascript - 使用 chrome.storage.get 获取变量

javascript - jQuery 外部事件插件无法正常运行

javascript - jQuery toggleClass() 不工作

javascript - 语法错误 : unterminated string literal javascript

javascript - 如何在没有提交按钮的情况下从文本字段调用 javascript 函数?

javascript - opencart 价格范围 slider 扩展

javascript - 从 Javascript 访问列表项模型的属性

javascript - 全屏图像背景Bootstrap轮播拒绝显示

javascript - 为什么我可以将未知属性分配给 typescript 中的文字对象?

javascript - JavaScript 脚本标记中的绝对路径