防止Javascript解码编码的HTML

Lei*_*igh 2 javascript php

首先让我说Javascript不是我的强项,我为此主题的信息所做的所有搜索都导致了如何处理url编码/解码字符串.

我遇到类似以下代码的问题:

<a href="#" onclick="<?php echo "alert('&#039;');"; ?>">test</>
Run Code Online (Sandbox Code Playgroud)

我希望由于传递给alert的值是url编码的,因此当点击链接时,会显示一个警告框,其中包含值&#039;.

事实证明,因为它位于onclick的引号之间,所以浏览器在执行之前将'解码'为单引号.基本上导致代码alert(''');明显破坏可怕.

以下工作正常.

<script>alert('&#039;');</script>
Run Code Online (Sandbox Code Playgroud)

首先,有没有办法禁用这种行为,或一个聪明的解决方法?(我猜不是)

我目前的解决方案是解码html编码的字符串,将斜杠应用于引号,然后重新编码.显然不是很优雅.

我们非常感谢更好的解决方案.

Rob*_*b W 5

这是预期的行为.当浏览器分析属性时,HTML源代码中的HTML实体会自动转换.这允许网站开发人员在不破坏页面的情况下包含特殊字符,例如属性中的引号.

使用htmlspecialchars以获得所需的效果:

<a href="#" onclick="<?php echo htmlspecialchars("alert('&#039;');"); ?>">test</a>
Run Code Online (Sandbox Code Playgroud)