嘿,我有一个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();
除此之外的任何其他尝试。当我尝试将其登录到控制台时,所有这些都返回“undefined”或“”或jquery对象。
有谁能告诉我如何将身体和头部标签作为字符串?
首选jQuery / JS而不是正则表达式
答案 0 :(得分:13)
尝试以下代码:
var head = htmlString.match(/<head[^>]*>[\s\S]*<\/head>/gi);
var body = htmlString.match(/<body[^>]*>[\s\S]*<\/body>/gi);
答案 1 :(得分: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]));
答案 2 :(得分:1)
可能这可以帮到你
var head = jQuery('<div/>').append(htmlString).find('head').html();
var body = jQuery('<div/>').append(htmlString).find('body').html();
答案 3 :(得分: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);
答案 4 :(得分:-4)
这很简单:
JQuery:$(head)
Native js:document.head
如果你想获得这个标签的HTML:
在JQuery中:$(head).html();
原生js:document.head.innerHtml
你在这里找到了很好的JQuery引用:http://visualjquery.com