使用 .html() 时,jQuery 是否会从字符串中删除一些 html 元素?

2023-12-21

我有一个包含完整 html 页面的 var,包括 head、html、body 等。当我将该字符串传递到 .html() 函数时,jQuery 会删除所有这些元素,例如 body、html、head 等,这是我不想要的。

我的数据变量包含:

<html>
<head>
<title>Untitled Document</title>
</head>
<body>
</body>
</html>

那么我的 jQuery 是:

// data is a full html document string
data = $('<div/>').html(data);
// jQuery stips my document string!
alert(data.find('head').html());

我需要操作完整的 html 页面字符串,以便我可以返回元素中的内容。我想用 jQuery 来做到这一点,但似乎所有方法,append()、prepend() 和 html() 都尝试将字符串转换为 dom 元素,这会删除完整 html 页面的所有其他部分。

还有其他方法可以做到这一点吗?我用另一种方法就好了。我的最终目标是在字符串中找到某些元素,所以我认为 jQuery 是最好的,因为我已经习惯了它。但是,如果它要修剪和删除我的字符串的一部分,我将不得不寻找另一种方法。

Ideas?


经过几次快速测试后,我发现这种行为不是由 jQuery 引起的,而是由浏览器引起的。

因为您可以轻松地验证自己(DEMOhttp://jsbin.com/ocupa3 http://jsbin.com/ocupa3)

var data = "<html><head><title>Untitled Document</title></head><body><p>test</p></body></html>";
data = $('<div/>').html(data);
alert(data.html());

在不同的浏览器中产生不同的结果

歌剧 10.10

<HEAD><TITLE>Untitled Document</TITLE></HEAD><P>test</P>

FF 3.6

<title>Untitled Document</title><p>test</p>

IE6

<P>test</P>

所以这与 jQuery 无关,当您在 div 中插入整个 html 字符串时,浏览器会删除一些标签。但是您需要单步执行整个 jQuery 代码html()为了确定。您需要对所有浏览器执行此操作,因为 jQuery 尝试通过多种不同的方式来完成其工作。


对于解决方案,我建议您研究使用 iframe(可能隐藏)并将该 iframe 内容设置为您拥有的 html 字符串。但请注意,摆弄 iframe 并以编程方式更改其内容也不是一件容易的事。还涉及不同的浏览器相关的怪癖和计时问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 .html() 时,jQuery 是否会从字符串中删除一些 html 元素? 的相关文章

随机推荐