0

嗨,我正在使用从锚链接调用的 JavaScript 函数,该链接传递具有特殊字符的标题,您能否告诉我如何转义传递给函数的字符串中的单引号。

下面给出了示例字符串,

string desc="test's/test2'w";

示例链接 html

"<a href="javascript:getdata(\'' + desc+ '\',);void(0);">TEST</a>"

所以这个函数getdata没有被调用,因为它没有转义那个字符。

它是一个遗留系统,我只需要使用 HTML

4

2 回答 2

4

不要通过将字符串拼凑在一起来生成 HTML,使用 DOM。不要使用 JavaScript URI,使用事件处理程序。

var desc = "test's/test2'w";
var link = document.createElement('a');
link.appendChild( document.createTextNode('TEST') );
link.href = "fallback.html";
link.addEventListener('click', function (evt) {
    getData(desc);
    evt.preventDefault();
});
document.body.appendChild(link);
于 2013-07-16T13:12:15.740 回答
0

如果您不知道所有HTML实体的名称,您仍然可以对它们进行HTML编码

function htmlEncode(str) {
    return str.replace(/[^\da-z()\[\] .,\/\\]/g, function (m) {
        return '&#' + m.charCodeAt(0) + ';';
    });
}
htmlEncode("test's/test2'w"); // "test&#39;s/test2&#39;w"

\da-z()\[\] .,\/\\允许字符的白名单在哪里。

如果您想将 HTML 生成为Strings,这没关系,但如果您想制作新的DOM元素,从长远来看,Quentin答案要好得多。

于 2013-07-16T13:12:13.013 回答