如何使用JavaScript从HTML中删除整个HTML,HEAD标签和BODY标签?

时间:2012-03-16 12:23:27

标签: javascript html html5

我有一个名为myWebsite.html的模板文件。它包含HTML模板需要具备的所有内容。所以它有HTML,HEAD和BODY标签。我想用JavaScript加载它并放入网站上的一个div。所以我不想拥有HTML,HEAD和BODY标签。怎么做?

这是我需要的原型:

$val = getData('myWebsite.html');
$val = removeHTMLHEADBODYTAGS($val); //remove these tags with everything insite, also remove the body tag but leave the contents in the body tag. Also remove the end tags of body and html - HOW TO DO THIS?
div.innerHTML = $val;

我想在纯JavaScript = NO jQUERY

中执行此操作

4 个答案:

答案 0 :(得分:3)

为什么不从标签中获取信息然后使用它?无需获取所有信息以及删除html,head和body:

content = $val.getElementsByTagName('body')[0].innerHTML();

答案 1 :(得分:1)

你可以用正则表达式提取它。类似于:/\<body[^>]*\>(.*)\<\/body/m - 应该返回<BODY>元素中的所有内容。

$val = getData('myWebsite.html');
var reg = /\<body[^>]*\>([^]*)\<\/body/m;
div.innerHTML = $val.match( reg )[1];

示例jsFiddle代码:http://jsfiddle.net/x4hPZ/1/

答案 2 :(得分:0)

怎么样:

var bodyContents = htmlstring.split('<body');//no >, body could have a property
bodyContents = bodyContents[1].replace('</body>','').replace('</html>','').replace(/^.*\>/,'');

最后一个正则表达式替换会删除开始正文标记的结束>以及所有可能的标记属性。

然而,这不是我做事的方式......如果可能的话,我会创建一个(i)Frame节点,将html加载到该帧中,并从body标签获取innerHTML。只是一个建议。

对,iFrame方式:

var document.ifrm = document.createElement('iframe')
document.ifrm.style = 'visibility:hidden';
document.body.appendChild(document.ifrm);
idoc = (document.ifrm.contentDocument ? document.ifrm.contentDocument : document.ifrm.contentWindow.document;)
idoc.open();
idoc.writeln('<html><head><title>foobar</title></head><body><p>Content</p></body></html>');
idoc.close();
var bodyContents = idoc.body.innerHTML;

有关代码说明:http://softwareas.com/injecting-html-into-an-iframe

或google.com上的任何其他热门话题:)

答案 3 :(得分:0)

使用jQuery你可以这样做:

$(document).ready(function(){
    var your_content = $("html").clone().find("head,body").remove().end().html();
});
  1. 使用“html”选择器
  2. 获取内容
  3. 使用clone
  4. 制作副本
  5. find您要删除的代码
  6. 删除它们和
  7. 转换回HTML
  8. 全部在一行。

    HTH,

    - hennson