【问题标题】:Backslash escape not working in HTML attributes反斜杠转义在 HTML 属性中不起作用
【发布时间】:2018-05-05 10:46:59
【问题描述】:

我尝试了以下代码来检查 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 属性值中不起作用。另外,我想在属性中定义单击按钮时会发生什么。

提前感谢您提供信息.....

【问题讨论】:

  • 这是 HTML 的任何错误吗?

标签: javascript html attributes backslash html-escape


【解决方案1】:

似乎工作。这是可运行的脚本/示例

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

【讨论】:

  • 不,兄弟!它没有。
猜你喜欢
  • 2015-09-09
  • 2010-10-18
  • 1970-01-01
  • 2013-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-19
相关资源
最近更新 更多