Что ж, вы, вероятно, хотите сделать что-то вроде этого: возьмите «innerHTML» элемента, содержащего ваш шаблон HTML (или что-то еще). Затем откройте новое окно и поместите в него HTML-код, окруженный блоком <pre>
. Вы также захотите заменить все важные символы разметки соответствующими HTML-сущностями и, вероятно, заменить символы новой строки <br>
элементами.
Вероятно, это будет близко к этому (но это не проверено):
<code>var html = document.getElementById('whatever').innerHTML
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/\r?\n/g, '<br>');
var w = window.open('', 'SourceWindow', 'height=500,width=600');
var d = w.document.open();
d.write('<html><body><pre>' + html + '
');
d.close ();
изменить & mdash; если вы хотите удалить блоки сценариев, вы можете добавить этот вызов «replace» в серию выше:
.replace(/<\s*script[^>]*>.*?<\/\s*script[^>]*>/g, '')
Это немного шатко, потому что в общем случае попытка распознать HTML с помощью регулярного выражения на самом деле невозможна. Однако, поскольку теги сценария на самом деле не содержат разметки и обязательно заканчиваются следующим закрывающим тегом сценария, он менее одиозен, чем общий случай.