我在下面的代码中尝试检查HTML属性值中的反斜杠是否使其旁边的字符转义:
<button id="b1" onclick="$('body').append('<button onclick=alert(\'something\');>')">test</button>
在这里,如果反斜杠有效,那么当我们点击#b1时,应该附加一个新按钮,当我们点击该新按钮时,应该弹出一个新警报。但事实并非如此。这意味着反斜杠转义在HTML属性中不起作用。 这是对的吗? 那我怎么逃避呢?
当我尝试使用 view-source:前缀打开该网页时,我看到了如下代码:
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Hi there!
</title>
<meta name="viewport" content="width=device-width">
<script src="jQuery.js"></script>
<style>
.red{color: red;}
</style>
</head>
<body>
<button id="b1" onclick="$('body').append('<button onclick=alert(+AFw'something+AFw');>test</button>')">
test
</button>
<script src="question.js"></script>
</body>
</html>
此处,反斜杠会替换为 + AFW 。这是错的吗 ?
此外,如果我尝试将onclick属性值更改为doIt();
并将下面的代码添加到question.js文件中,它可以完美地运行:
function doIt(){
alert("<button onclick=\"alert('hi');\"> ");
}
但正如问题所说,我们必须找出为什么反斜杠转义不能在HTML属性值中起作用。另外,我想定义在按钮点击时会发生什么,就在属性中。
提前感谢您提供信息.....
答案 0 :(得分:0)
似乎工作。这是可运行的脚本/示例
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="b1" onclick="$('body').append('<button onclick=alert(\'something\');>test</button>')">test</button>