gpt4 book ai didi

javascript - 将错误的字符串作为 javascript 参数传递

转载 作者:行者123 更新时间:2023-11-30 23:48:57 26 4
gpt4 key购买 nike

我在传递参数时遇到问题,我认为我应该能够优雅地解决该问题(用 1 行代码),但我似乎无法解决该问题。我有一个删除项目的链接,如下所示:

<a href="javascript:confirmDelete('${result.headline}',${result.id});">

当 result.headline 包含 ' 或 "或其他破坏 javascript 调用的字符时,就会出现问题。我已经尝试过 ${fn:replace(result.headline,"'","")} ,它修复了 ' 的问题,但是我想做某种 URLEncode (我认为),这样这些字符不会破坏 javascript 调用。有关如何在不更改后端任何内容的情况下解决此问题的任何想法吗?

最佳答案

避免将内联 JavaScript 放入元素中,尤其是 javascript: 伪 URL,这些伪 URL(除了永远不应该使用的邪恶之外)是 JavaScript-in-URL-in-HTML。您必须获取标题并:

  1. JavaScript 字符串文字对其进行编码。 (替换 \'、控制字符和潜在的 Unicode 字符,或者仅使用 JSON 编码器来为您完成此操作。)然后,
  2. 对其进行 URL 编码。那么,
  3. 对其进行 HTML 编码。

最好将数据放在标记中,这样您只需担心简单的 HTML 编码,就像在其他地方所做的那样,以避免跨站点脚本:

<a href="#" class="confirmdelete-${fn:escapeXml(result.id)}" title="${fn:escapeXml(result.headline)}">Delete</a>

并让 JavaScript 提取它们:

<script type="text/javascript">
for (var i= document.links.length; i-->0;) {
var link= document.links[i];
if (link.className.indexOf('confirmdelete-')===0) {
link.onclick= function() {
confirmDelete(this.title, this.className.substring(14));
return false;
};
}
}
</script>

(使用实用函数或框架编写上述内容可能有更简单、更短或更清晰的方法,并且对于链接是否确实是此类操作的正确标记存在争议,但这是基本思想.)

关于javascript - 将错误的字符串作为 javascript 参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1986953/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com