Nic*_*ard 17 html javascript string jquery
我有一个包含完整html页面的var,包括head,html,body等.当我将该字符串传递给.html()函数时,jQuery会删除所有这些元素,例如body,html,head等,我不想要.
我的数据var包含:
<html>
<head>
<title>Untitled Document</title>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
然后我的jQuery是:
// data is a full html document string
data = $('<div/>').html(data);
// jQuery stips my document string!
alert(data.find('head').html());
Run Code Online (Sandbox Code Playgroud)
我需要操作一个完整的html页面字符串,以便我可以返回元素中的内容.我想用jQuery做这个,但似乎所有方法,append(),prepend()和html()都试图将字符串转换为dom元素,这将删除完整html页面的所有其他部分.
还有其他方法可以做到这一点吗?我会很好用另一种方法.我的最终目标是在我的字符串中找到某些元素,所以我认为jQuery最好,因为我已经习惯了.但是,如果它要修剪并删除我的部分字符串,我将不得不寻找另一种方法.
想法?
jit*_*ter 12
经过几次快速测试后,我觉得这种行为不是由jQuery引起的,而是由浏览器引起的.
您可以轻松验证自己(DEMO 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());
Run Code Online (Sandbox Code Playgroud)
在不同浏览器中产生不同的结果
Opera 10.10
<HEAD><TITLE>Untitled Document</TITLE></HEAD><P>test</P>
Run Code Online (Sandbox Code Playgroud)
FF 3.6
<title>Untitled Document</title><p>test</p>
Run Code Online (Sandbox Code Playgroud)
IE6
<P>test</P>
Run Code Online (Sandbox Code Playgroud)
所以这与jQuery无关,它是在你在div中插入一个完整的html字符串时剥离一些标签的浏览器.但是你需要逐步完成整个jQuery代码html()才能确定.并且您需要为所有浏览器执行此操作,因为jQuery尝试执行它的工作有几种不同的方式.
对于解决方案,我建议您使用iframe进行调查(可能隐藏)并将iframe内容设置为您拥有的html字符串.但请注意,摆弄iframe并以编程方式更改其内容也不是一件容易的事.还有不同的浏览器相关的怪癖和时间问题.