Tri*_*nko 7 html encoding attributes
属性值需要进行编码。如果我像这样构建一个 jQuery 对象:
$('<div data-value="' + value + '">');
实际上,value必须像这样进行属性编码:
$('<div data-value="' + HtmlAttributeEncode(value) + '">');
我找不到这样的原生函数。有些人认为这只是将双引号替换为 的问题",但微软的HttpEncoder.HtmlAttributeEncode方法对这四个字符进行了编码& < " '。我似乎有这样的实现quoteattr: https: //stackoverflow.com/a/9756789/88409,但这效率非常低,调用替换来多次迭代字符串。同样,我需要一个本机函数来编码 JavaScript 字符串(例如$('<div onclick="var s =\'' + HtmlAttributeEncode(JavaScriptStringEncode(value)) + '\';alert(s);"></div>).appendTo(body);<< 仅用于说明目的的示例)
是否有此功能的本机等效项?
注意:请不要提及escape(现已弃用,取而代之的是encodeURI和encodeURIComponent)所有这些都与属性编码无关。
不。
但你不需要它们,因为你可以使用 DOM 方法(或围绕它们的 jQuery 包装器)构建元素,这绕过了转义的需要,因为你处理的是 DOM 而不是 HTML。
$('<div />', { "data-value" : value });
Run Code Online (Sandbox Code Playgroud)
或者
var div = document.createElement('div');
div.setAttribute('data-value', value);
Run Code Online (Sandbox Code Playgroud)
如果你确实想获取转义的 HTML,你可以获取 DOM 并从中生成 HTML:
var html = $('<div />').append(
$('<div />', { "data-value" : value })
).html();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4755 次 |
| 最近记录: |