我有以下页面
<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>
as in @Daniel https://stackoverflow.com/questions/3509818/why-script-tag-in-js-string-is-being-validated/3509843#3509843的回答。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)