如何转义HTML以用于JavaScript字符串?

时间:2018-03-15 11:04:03

标签: javascript html string escaping special-characters

基本上,我想这样做:

const html = "HTML source code";

HTML源代码可能包含新行字符,标签,引号......任何有效的HTML。然后使用html变量的值来使用JavaScript创建有效的html页面:

document.documentElement.innerHTML = unescape(html);

我尝试过几样的事情,比如替换引号(单引号或双引号),替换新的行字符并将html包装在``中以制作模板文字......但似乎都失败了(某些网页的源代码)。

E.g:

//fails
const html = `HTML here`;
document.documentElement.innerHTML = html;

..和

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,这应该会帮助你:

const html = "<p><h2>I'm a headline!</h2>I'm some text!</p>";
document.body.innerHTML = html;

如果您的HTML代码使用引号(对于ID,类等),您可以使用单引号:

const html = '<div id="someDiv"><img src="https://en.wiktionary.org/wiki/tree"></div>';
document.body.innerHTML = html;

如果你的代码有e。 G。新行,使用\n转义它们或只删除它们,以便您的字符串适合一行:

const html = "<p>\n<h2>Headline!</h2\n</p>";
document.body.innerHTML = html;

注意:\n!= <br>

如果要通过添加两个或更多变量将代码字符串放在一起,请执行以下操作:

const htmlPart1 = "<p><h2>";
const htmlPart2 = "Heading!</h2></p>";

document.body.innerHTML = htmlPart1 + htmlPart2;

如果你想插入一个包含一些JS的script标签,我恐怕你不能这样做。在写这个答案的时候我自己尝试了很多,而且我找不到任何解决方案。

如果我错了,请纠正我。