php - 防止 Javascript 解码编码的 HTML

标签 php javascript

首先让我说 Javascript 不是我的强项,我对有关该主题的信息进行的所有搜索都导致了如何处理 url 编码/解码字符串。

我在处理类似于以下的一些代码时遇到了问题:

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

我希望因为传递给警报的值是 url 编码的,所以当单击链接时,将显示一个警报框,其中包含值 '

事实证明,因为它位于 onclick 的引号之间,所以浏览器在执行之前将 ' 解码为单引号。基本上导致代码为 alert(''');,这显然会严重中断。

以下工作正常。

<script>alert('&#039;');</script>

首先,有没有办法禁用此行为,或者有巧妙的解决方法? (我猜不是)

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

我们将不胜感激更好的解决方案。

最佳答案

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

使用htmlspecialchars获得预期的效果:

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

关于php - 防止 Javascript 解码编码的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9503331/

相关文章:

php - 为 PHP 查询创建 GridView

php - 如何从php/mysql中的不同表中获取特定列数据

php - 将 php-memcached 对象传递给扩展方法

php - jQuery dataTables 不会发送 POST 数组

javascript - 如何在没有 jQuery 的情况下使用 JavaScript 遍历每个带有类名的选中复选框

javascript - md- datePicker - 日期实例总是错误

php - 如何设置特定用户对后端 Joomla 2.5.4 中特定模块的访问权限?

javascript - Angular JS 在 radio 检查时显示输入

javascript - 如何列出 casperJS 页面加载的外部 javascript 资源?

javascript - PDF.js 中 isEvalSupported 选项的安全含义是什么