我有一个名为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
中执行此操作答案 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();
});
clone
find
您要删除的代码全部在一行。
HTH,
- hennson