首先让我说Javascript不是我的强项,我为此主题的信息所做的所有搜索都导致了如何处理url编码/解码字符串.
我遇到类似以下代码的问题:
<a href="#" onclick="<?php echo "alert(''');"; ?>">test</>
Run Code Online (Sandbox Code Playgroud)
我希望由于传递给alert的值是url编码的,因此当点击链接时,会显示一个警告框,其中包含值'.
事实证明,因为它位于onclick的引号之间,所以浏览器在执行之前将'解码'为单引号.基本上导致代码alert(''');明显破坏可怕.
以下工作正常.
<script>alert(''');</script>
Run Code Online (Sandbox Code Playgroud)
首先,有没有办法禁用这种行为,或一个聪明的解决方法?(我猜不是)
我目前的解决方案是解码html编码的字符串,将斜杠应用于引号,然后重新编码.显然不是很优雅.
我们非常感谢更好的解决方案.
这是预期的行为.当浏览器分析属性时,HTML源代码中的HTML实体会自动转换.这允许网站开发人员在不破坏页面的情况下包含特殊字符,例如属性中的引号.
使用htmlspecialchars以获得所需的效果:
<a href="#" onclick="<?php echo htmlspecialchars("alert(''');"); ?>">test</a>
Run Code Online (Sandbox Code Playgroud)