gpt4 book ai didi

javascript - jQuery URI 编码 (char &) .html() 属性值

转载 作者:行者123 更新时间:2023-11-28 02:54:03 24 4
gpt4 key购买 nike

我在最后一天阅读了很多 HTML 编码帖子来解决这个问题。我刚刚设法找到它。基本上我已经用 jQuery 在嵌入标签上设置了一个属性。一切在浏览器中都运行良好。否,我想读取 HTML 本身,将结果添加为输入字段的值,以便用户复制并粘贴它。

问题是 .html() 函数(也是普通的 JS .innerHTML)将 '&' char 转换为 '& amp;' (没有空格)。使用不同的 html 编码器函数并没有什么区别。我需要嵌入代码中的“&”字符。
这是代码:

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&amp;YXX=xyzz ...

当我使用时:

$("#preview_small object").clone().children("embed").attr("src");

返回

main.swf?XY=xyz&YXX=xyzz

在使用 .html() 获取字符串后,如何直接获取“&”字符,而不使用正则表达式,有什么想法

最佳答案

I need the & char in the embed code.

不,你不知道。这:

<embed src="xyz&YXX=xyz"></embed>

是无效的 HTML。它可以在浏览器中工作,因为它们尝试修复这样的错误,但前提是字符串 YXX与 HTML 实体名称不匹配。你不想依赖它。

这个:

<embed src="xyz&amp;YXX=xyz"></embed>

是正确的,在任何地方都适用,并且是您应该告诉用户复制和粘贴的版本。

attr("src") returns xyz&YXX=xyz

是的,这就是该属性的基本值。属性值和文本内容可以直接包含几乎任何字符。只需对它们进行 HTML 序列化即可对其进行编码:

<div title="a&lt;b&quot;&amp;c&gt;d">

$('div').attr('title') -> a<b"&c>d

I want to read the HTML itself to add the result as a value for an input field

<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, '&amp;').replace(/</g, '&lt;').replace(/"/g, '&quot;');
}

var src= 'XY=xyz&YXX=xyzz';
$('#foo').val('<embed src="'+encodeHTML(src)+'"><\/embed>');

(关闭标记中的 \/ 只是为了避免被误认为是 <script> block 的结尾,以防万一您处于其中。)

关于javascript - jQuery URI 编码 (char &) .html() 属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3101333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com