忽略 JavaScript 引用内容中的空格

Ignore whitespace within JavaScript quote content

document.querySelector( "style" ).innerHTML +=
"html {" +
"  background-color: #0dd;" +
"}";
html {
  background-color: #fff;
  font-family: Arial;
}
body {
  display: flex;
  justify-content: center;
}
td {
  background-color: #fafafa;
}
th:first-child, td:first-child {
  border-left-style: none;
}
th:last-child, td:last-child {
  border-right-style: none;
}
th:first-child {
  border-top-left-radius: 1rem;
}
th:last-child {
  border-top-right-radius: 1rem;
}
tr:last-child td {
  border-bottom-style: none;
  background-color: #efefef;
}
tr:last-child td:first-child {
  border-bottom-left-radius: 1rem;
}
tr:last-child td:last-child {
  border-bottom-right-radius: 1rem;
}
<html>
  <head>
    <style>
      ::selection {
        background-color: #0df; color: #0df;
      }
      table, th, td {
        padding: 1rem;
        border-style: solid;
        border-color: #eee;
        border-collapse: collapse;
      }
      table {
        margin-top: 1rem;
        border-style: none;
      }
      th {
        border-top-style: none;
        border-color: #111;
        background-color: #222;
        color: #fff;
        border-bottom-color: #fff;
      }
    </style>
  </head>
  <body>
    <table>
      <tr> <th>One</th><th>Two</th><th>Three</th> </tr>
      <tr> <td>four</td> <td>five</td><td>six</td> </tr> 
      <tr> <td>seven</td> <td>eight</td><td>nine</td> </tr>  
    </table>
  </body>
</html>

document.querySelector( "style" ).innerHTML +=
"html {" +
"  background-color: #0dd;" +
"}";

我有大量 HTML/CSS 文件,我想将它们“注入”到网页的某些部分,就像我在本例中使用 style 标记所做的那样。

我希望像这样保持这些文件不变:

document.querySelector( "style" ).innerHTML += "
  html {
    background-color: #0dd;
  }
";

无需将每 JavaScript 行用引号引起来并在每行末尾添加 + 运算符。

我是否必须将我的所有代码都转换成这种格式?或者在 JavaScript 中有没有办法将此 HTML/CSS 代码按原样添加到元素中;无需逐行更改原始代码的格式?

与这里具体的CSS和HTML代码无关。我只是用它作为例子。

您可以使用Template literals

模板文字是允许嵌入表达式的字符串文字。您可以使用它们的多行字符串和字符串插值功能。

使用普通字符串,您必须使用以下语法才能获得多行字符串:

console.log('string text line 1\n' +
'string text line 2');
// "string text line 1
// string text line 2"

使用模板字面量,你可以这样做:

console.log(`string text line 1
string text line 2`);
// "string text line 1
// string text line 2"

你的情况:

document.querySelector( "style" ).innerHTML +=
`html { 
  background-color: #0dd;
}`;