需要对属性值进行编码。 如果我像这样构建一个jQuery对象:
$('<div data-value="' + value + '">');
实际上,value
必须按如下属性编码:
$('<div data-value="' + HtmlAttributeEncode(value) + '">');
我找不到这样的原生功能。有人建议只需用"
替换双引号,但Microsoft的HttpEncoder.HtmlAttributeEncode
方法会对这四个字符& < " '
进行编码。我似乎在quoteattr
这样的实现:https://stackoverflow.com/a/9756789/88409,但这非常低效,调用replace会多次迭代字符串。同样,我需要一个用于编码javascript字符串的本机函数(例如$('<div onclick="var s =\'' + HtmlAttributeEncode(JavaScriptStringEncode(value)) + '\';alert(s);"></div>).appendTo(body);
&lt;&lt;设计示例仅用于说明)
是否存在此功能的本机等效项?
注意:请不要提及escape
(现已弃用,encodeURI
和encodeURIComponent
)所有这些都与属性编码无关的
答案 0 :(得分:0)
没有
但是你不需要它们,因为你可以使用DOM方法(或者围绕它们的jQuery包装器)构建元素,因为你正在处理DOM而不是HTML,所以它绕过了转义的需要。
$('<div />', { "data-value" : value });
或
var div = document.createElement('div');
div.setAttribute('data-value', value);
如果您真的想要获取转义的HTML,可以使用DOM并从中生成HTML:
var html = $('<div />').append(
$('<div />', { "data-value" : value })
).html();
答案 1 :(得分:0)
找到了一个npm软件包,可以完成您的工作!