gpt4 book ai didi

javascript - 在 HTML 链接中使用 javascript 变量时的正确语法

转载 作者:行者123 更新时间:2023-11-30 11:34:53 25 4
gpt4 key购买 nike

我只是想组合一个简单的 html (php) 链接并包含一个 JS 变量。这就是我所拥有的,但语法不正确。有什么建议吗?

$.each(playlist, function(index, val) {
playlistHtml += "<form name="form" method="post" action="../_inc/process_track_move.php?track="+val.sources[0].title"
});

最佳答案

您通常不应该在 JavaScript 中手动组装原始 HTML;很容易出错。在您的情况下,即使您的代码有效,它也容易受到编码错误和 XSS 安全问题的影响,因为它没有正确编码属性值。

更安全的选择是使用 DOM API、框架或默认安全的模板引擎来创建您需要的元素,它们会自动处理编码属性值。

以下是我们如何使用 DOM API 代替原始 HTML 来处理您的案例。

var playlist = document.createElement('div');  // or document.querySelector('#playlist')?

$.each(playlist, function(index, val) {
var form = document.createElement('form');
form.setAttribute('name', 'form');
form.setAttribute('method', 'post');
form.setAttribute('action', '../_inc/process_track_move.php?track=' + val.sources[0].title);
playlist.appendChild(form);
});

playlistHtml += playlist.innerHTML;

您可以将创建的元素直接添加到文档中,或者像您最初使用的那样将它们转换为 HTML 字符串。

如果您真的必须使用原始 HTML 连接,您不能只在 HTML 上 + 一个文本字符串,您必须先将其编码为 HTML 以避免安全漏洞或错误。至少,这意味着使用这样的函数:

function textToHtml(s) {
return s
.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#39;');
}

您还必须将字符串中的 " 转义为 \",以便它们能够正确解析。这给了我们:

playlistHtml += "<form name=\"form\" method=\"post\" action=\"../_inc/process_track_move.php?track=" + textToHtml(val.sources[0].title) + "\"></form>";

关于javascript - 在 HTML 链接中使用 javascript 变量时的正确语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44877430/

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