属性值需要进行编码。如果我要构建一个 jQuery 对象,代码如下:
$('<div data-value="' + value + '">');
实际上,value
必须像这样进行属性编码:
$('<div data-value="' + HtmlAttributeEncode(value) + '">');
我找不到这样的原生函数。有人认为只需将双引号替换为"
即可,但 Microsoft 的 HttpEncoder.HtmlAttributeEncode
方法会对这四个字符& < " '
进行编码。我在此处看到了一些实现,例如 quoteattr : https://dev59.com/_Wsz5IYBdhLWcg3wpZhF#9756789 ,但它效率非常低,调用替换来多次迭代字符串。同样,我需要一个原生函数来对 JavaScript 字符串进行编码(例如 $('<div onclick="var s =\'' + HtmlAttributeEncode(JavaScriptStringEncode(value)) + '\';alert(s);"></div>)。appendTo(body);
<< 这只是一个为了说明而虚构的例子)。
是否有这种功能的原生等效物?
注意:请不要提到 escape (现在已弃用,改用 encodeURI
和 encodeURIComponent
),它们都与属性编码无关。
HTMLAttributeEncode
定义在哪里? - Michael