Javascript 为什么</脚本>;正在验证js字符串中的标记
我有下一页Javascript 为什么</脚本>;正在验证js字符串中的标记,javascript,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",
<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>
var obj={someHTML:“警报('a');html的其余部分”,
someOtherAttribute:“某些值”};
警报(obj.someHTML);
在我的对象的someHTML属性中,我有一个字符串中的
标记。但浏览器将其读取为实际的关闭标记并关闭脚本元素。这里有我遗漏的东西吗?(在ff和chrome中试用过)您可能希望转义脚本标记,如下所示:
var obj={
someHTML:“警报('a');html的其余部分”,
someOtherAttribute:“某些值”
};
相关职位:
<script type="text/javascript">
<![CDATA[
var obj={someHTML: "<script>alert('a');</script>rest of the html",
someOtherAttribute:"some value"};
obj(some.pageButtonScript);
]]>
</script>
HTML在之前被解析,并且独立于Javascript。当前浏览器行为是,一旦找到打开的标记
,浏览器将切换到“脚本数据状态”,并将所有以下数据解释为脚本,直到找到
检测到
的位置无关紧要-在JS字符串、JS注释、CDATA节甚至HTML注释中
您需要使字符串在HTML解析器看来不像
。最简单的方法是按照中的答案编写
。另一种方法是这样做
var obj= {
someHTML: "<script>alert('a');</scr"+"ipt>rest of the html",
someOtherAttribute: "some value"
};
var obj={
someHTML:“警报('a');html的其余部分”,
someOtherAttribute:“某些值”
};
只需在结束脚本标记之间留一个空格,这样它就不会被解析为结束标记。嘿,我在stackoverFlow中发现了一个bug。我不能用普通的文字书写。它在注释中工作,但不是在实际问题中。奇怪的是:关于HTML4.01规范,实际上它应该是
ETAGO
sequence
var obj= {
someHTML: "<script>alert('a');</scr"+"ipt>rest of the html",
someOtherAttribute: "some value"
};