2015-11-07 2 views
0

Мне нужно распечатать в новом окне с помощью html-тегов html. То, что я сделал это:Печать html-текста с тегом в новом окне

function printNewTab(toPrint, title) { 
    var newWin = window.open("about:blank"); 
    newWin.document.write("<html><head><title>" + title + "</title></head></html>"); 
    newWin.document.write(toPrint.toString()); 
    console.log(title + ":"); 
    console.log(toPrint); 
} 

, но если у меня есть строка, как это:

var s = "<h1>title<u> number</u> 1</h1>"; 

и использовать метод выше:

printNewTab(s, "title"); 

я получить новое окно, в котором текст не отображает теги, а форматируется в html.

Пока я действительно хотел бы напечатать <h1>title<u> number</u> 1</h1>. Как я могу это сделать?

Спасибо!

ответ

2

Если вы html кодируете свою строку так, чтобы символы, такие как <, стали &lt, он будет работать.

document.write("&lt;h1&gt;"); будет печатать <h1>.

Кстати, функция jQuery `s text() делает это для вас.

function escapeHtml(unsafe) { 
    return unsafe 
     .replace(/&/g, "&amp;") 
     .replace(/</g, "&lt;") 
     .replace(/>/g, "&gt;") 
     .replace(/"/g, "&quot;") 
     .replace(/'/g, "&#039;"); 
} 

document.write(escapeHtml("<h1>title<u> number</u> 1</h1>")); 

Это будет печать <h1>title<u> number</u> 1</h1>.

функция снят из this question. Кредиты на @bjornd.

+0

Mmm ok, но мне нужно что-то более общее, потому что H1 был всего лишь примером. Строка может состоять из любых html-тегов. – lonely

+0

Вы просто создаете функцию для замены всех тегов для вас. Я добавлю пример – victor

1

Преобразование всех HTML символы организаций, возможно, как это:

str = str.replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;'); 

Порядок не имеет значения, кроме того, что амперсанд заменить должен быть первым, иначе он будет создавать странное поведение.

+0

Спасибо за ответ, но я получаю эту ошибку: 'Uncaught TypeError: toPrint.replace не является функцией' .. – lonely

+0

Дайте мне результат« typeOf toPrint »с консоли – Quantum

+0

На самом деле, конвертируйте toPrint в строку перед тем, как сделать заменить. – Quantum

Смежные вопросы