2

嘿,我有一个 html 字符串,我无法从中获取标签。

我尝试了很多东西,这里有一些:

var head = $("head",$(htmlString)).html();
var body = $("body",$(htmlString)).html();
var head = $("head",htmlString).html();
var body = $("body",htmlString).html();
var head = $("head",$(htmlString).html()).html();
var body = $("body",$(htmlString).html()).html();
var head = htmlString.match(/<head[^>]*>([^<]+)<\/head>/);
var body = htmlString.match(/<body[^>]*>([^<]+)<\/body>/);
var head = jQuery('<div/>').append(htmlString).find('head').html();
var body = jQuery('<div/>').append(htmlString).find('body').html();

除此之外的任何其他尝试。当我尝试将其记录到控制台时,所有这些都返回“未定义”或“”或 jquery 对象。

谁能告诉我如何将身体和头部标签作为字符串?

首选 jQuery/JS 而不是正则表达式

4

5 回答 5

17

试试下面的代码:

var head = htmlString.match(/<head[^>]*>[\s\S]*<\/head>/gi);
var body = htmlString.match(/<body[^>]*>[\s\S]*<\/body>/gi);
于 2012-11-20T11:36:17.653 回答
5

由于您的 HTML 格式良好,您可以创建一个文档并从中选择节点:

var doc = (new DOMParser()).parseFromString(htmlstring,"text/html");
console.log(doc.head.outerHTML);
console.log(doc.body.outerHTML);

这是一个演示:http: //jsfiddle.net/X3Uq2/

在 Chrome 中,您不能使用"text/html"内容类型,因此您必须制作 XML 文档并使用getElementsByTagName

var s = new XMLSerializer();
var doc = (new DOMParser()).parseFromString(data,"text/xml");
console.log(s.serializeToString(doc.getElementsByTagName("head")[0]));
console.log(s.serializeToString(doc.getElementsByTagName("body")[0]));

http://jsfiddle.net/X3Uq2/2/

于 2012-11-20T11:17:35.787 回答
1

您可以通过这种方式使用 javascript slice方法:

var html = '<!DOCTYPE html>'+
'<html>'+
  '<head>' +
    '<meta name="viewport" content="width=device-width" /> '+
    '<title></title>' +
  '</head>' +
  '<body>Some Text!</body>' +
'</html>'
var bEnd, bStart;
bStart = html.indexOf("<body");
bEnd = html.indexOf("</body");
var body = html.slice(bStart, bEnd);
console.log(body);

于 2015-12-01T14:45:19.427 回答
0

可能这可以帮助你

var head = jQuery('<div/>').append(htmlString).find('head').html();

var body = jQuery('<div/>').append(htmlString).find('body').html();
于 2012-11-20T11:21:26.827 回答
-4

这真的很简单:

jQuery: $(head)
原生 js: document.head

如果您想获取此标签的 html:

在 JQuery 中: $(head).html();
原生js:document.head.innerHtml

您可以在这里找到很好的 JQuery 参考:http: //visualjquery.com

于 2012-11-20T11:15:44.107 回答