Как удалить весь HTML, теги HEAD и тег BODY из строки с HTML, используя JavaScript? - PullRequest
0 голосов
/ 16 марта 2012

У меня есть файл шаблона, который называется myWebsite.html. Он содержит все, что должен иметь шаблон HTML. Таким образом, он имеет теги HTML, HEAD и BODY. Я хочу загрузить его с помощью JavaScript и поместить в один из разделов на сайте. Поэтому я не хочу иметь теги 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 = НЕТ jQUERY

Ответы [ 4 ]

3 голосов
/ 16 марта 2012

Почему бы не извлечь информацию из тега, а затем поработать с этим? Нет необходимости извлекать всю информацию и удалять html, голову и тело:

content = $val.getElementsByTagName('body')[0].innerHTML();
1 голос
/ 16 марта 2012

Вы можете извлечь его с помощью регулярного выражения. Что-то вроде: /\<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/

0 голосов
/ 16 марта 2012

С помощью jQuery вы можете сделать это так:

$(document).ready(function(){
    var your_content = $("html").clone().find("head,body").remove().end().html();
});
  1. получить содержимое с помощью селектора "html"
  2. сделать копию с помощью clone
  3. find теги, которые вы хотите удалить
  4. удалить их и
  5. преобразовать обратно в HTML

все в одну строку.

HTH,

- Хеннсон

0 голосов
/ 16 марта 2012

как насчет:

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

Последняя замена регулярных выражений удаляет закрывающий > открывающего тега body и все возможные свойства тега.

Однако это некак бы я это делал ... Если это вообще возможно, я бы создал (i) узел фрейма, загрузил html в этот фрейм и получил innerHTML из тега body.Просто предложение.

Верно, путь 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 по этому вопросу:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...