[英]jQuery URI encode (char &) .html() attribute value
为了解决这个问题,我在最后一天阅读了很多HTML编码文章。 我只是设法找到它。 基本上,我已经在jQuery的embed标签上设置了一个属性。 在浏览器中一切正常。 不,我想阅读HTML本身以将结果添加为输入字段的值,以使用户复制并粘贴它。
into 问题是.html()函数(也是普通的JS .innerHTML)将转换为 . 。 使用不同的html编码器功能没有任何区别。 我需要在嵌入代码中使用'&'char。
这是代码:
HTML:
<div id="preview_small">
<object><embed src="main.swf?XY=xyz&YXX=xyzz"></embed>
</object></div>
jQuery的:
$("#preview_small object").clone().html();
退货
... src=main.swf?XY=xyz&YXX=xyzz ...
当我使用时:
$("#preview_small object").clone().children("embed").attr("src");
退货
main.swf?XY=xyz&YXX=xyzz
任何获得.html()字符串后如何直接使用'&'char的想法,而无需使用正则表达式
我需要在嵌入代码中添加
&
char。
不,你不会。 这个:
<embed src="xyz&YXX=xyz"></embed>
是无效的HTML。 它会在浏览器中起作用,因为它们会尝试修复此类错误,但YXX
是只要字符串YXX
与HTML实体名称不匹配即可。 您不想依靠它。
这个:
<embed src="xyz&YXX=xyz"></embed>
是正确的,可以在任何地方使用,并且是您应该告诉用户复制和粘贴的版本。
attr("src")
返回xyz&YXX=xyz
是的,那是该属性的基础值。 属性值和文本内容可以直接包含几乎任何字符。 只是必须对其进行编码的HTML序列化:
<div title="a<b"&c>d">
$('div').attr('title') -> a<b"&c>d
我想阅读HTML本身,将结果添加为输入字段的值
<textarea id="foo"></textarea>
$('#foo').val($('#preview_small object').html());
但是请注意, innerHTML
/ html()
的序列化输出不是在HTML的任何特定固定方言中,尤其是IE可能会为您提供虽然在浏览器中通常可以理解的代码,但在技术上还是无效的:
$('#somediv').html('<div title="a/b"></div>');
$('#somediv').html() -> '<DIV title=a/b></DIV>' - missing quotes
因此,如果您知道要呈现给用户的HTML特定格式,则最好自己生成:
function encodeHTML(s) {
return s.replace(/&/g, '&').replace(/</g, '<').replace(/"/g, '"');
}
var src= 'XY=xyz&YXX=xyzz';
$('#foo').val('<embed src="'+encodeHTML(src)+'"><\/embed>');
(在close标记中的\\/
只是为了避免误认为<script>
块的结尾,以防万一。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.