use*_*046 60 html javascript escaping javascript-events
下面的简单代码块可以在静态HTML页面中提供,但会导致JavaScript错误.你应该如何逃避onClick处理程序中的嵌入式双引号(即\"xyz)?注意,HTML是通过从数据库中提取数据来动态生成的,数据库的数据是其他HTML代码的片段,可以是单个或双引号.似乎在双引号字符之前添加一个反斜杠并不能解决问题.
<script type="text/javascript">
function parse(a, b, c) {
alert(c);
}
</script>
<a href="#x" onclick="parse('#', false, '<a href=\"xyz'); return false">Test</a>
Run Code Online (Sandbox Code Playgroud)
Lan*_*uhn 84
你试过了吗
" 要么 \x22
代替
\"
Run Code Online (Sandbox Code Playgroud)
?
虽然我同意CMS以不引人注目的方式(通过像jquery或dojo这样的lib)执行此操作,但这也是有用的:
<script type="text/javascript">
function parse(a, b, c) {
alert(c);
}
</script>
<a href="#x" onclick="parse('#', false, 'xyc"foo');return false;">Test</a>
Run Code Online (Sandbox Code Playgroud)
barfs的原因不是因为JavaScript,而是因为HTML解析器.它没有逃脱引号的概念,它在查找结束引用时发现它并找到它并将其作为onclick函数返回.这是无效的JavaScript,但是在JavaScript尝试执行该函数之前,您找不到有关错误的信息.