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オブジェクトを返します。

body タグと head タグを文字列として取得する方法を教えてください。

正規表現ではなく、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/

"text/html"Chrome では、コンテンツ タイプを使用できないため、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スライスメソッドを使用できます。

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 に答える