鉴于刚刚在描述您尝试解决的实际问题的评论中提供的信息,您根本不需要检索body
标签的属性,也不应该使用字符串搜索。做就是了:
var $newContent = $('<div>' + data + '</div>').children();
$(document.body).empty().append($newContent);
即解析整个数据 -$(data)
然后获取所有子节点,并将它们放入现有的document.body
.
这<div> + data + </div>
是必要的,因为$(html)
需要单个元素(和子元素)并且不接受<!DOCTYPE ...><html>...</html>
. 它似乎也去掉了<head>
和<body>
标签,只留下了他们的孩子。在我刚刚做的测试中,给定
var data = '<!doctype html><html><head></head><body><span>Test</span>' +
'<span>Test 2</span></body></html>'
然后
$('<div>' + data + '</div>').children()
只给出两个<span>
元素,即数据<body>
标签的所需内容。
编辑好的 -由于剥离了and标记,这似乎并没有达到预期的效果,而保留了原始内容。<head>
<body>
<head>
试试这个,而不是 - 它是您原始技术和这个的组合:
var $newContent = $(data.substring(data.indexOf('<body')));
$(document.body).empty().append($newContent);