从HTML字符串注入HTML

假设您有一些HTML字符串:

let string_of_html = `
  <div>Cool</div>
`;

也许它来自API,或者您是根据模板文字或其他内容自行构建的。

您可以使用innerHTML将其放入元素中,例如:

document.body.innerHTML = string_of_html;

// Append it instead
document.body.innerHTML += string_of_html;

如果使用insertAdjacentHTML函数,您将有更多的控制权,因为可以将新HTML放在四个不同的位置:

<!-- beforebegin -->
<node>
  <!-- afterbegin -->
  text inside node
  <!-- beforeend -->
</node>
<!-- afterend -->

您可以像...使用它

el.insertAdjacentHTML('beforebegin', string_of_html);
el.insertAdjacentHTML('afterbegin', string_of_html);
el.insertAdjacentHTML('beforeend', string_of_html);
el.insertAdjacentHTML('afterend', string_of_html);

在某些情况下,您可能想在使用JavaScript之前仍使用DOM创建新创建的DOM。 在这种情况下,您可以先解析您的字符串,例如:

let dom = new DOMParser()
  .parseFromString(string_of_html, 'text/html');

这将为您提供完整的DOM,因此您需要提取出添加的孩子。 假设它只有一个父元素,就像……

let dom = new DOMParser()
  .parseFromString(string_of_html, 'text/html');
let new_element = dom.body.firstElementChild;

现在,您可以根据需要弄乱该new_element ,在执行您需要做的事情之前,我想。

不过,这样做更简单:

let new_element = document.createRange()
  .createContextualFragment(string_of_html);

您将直接将元素作为要附加的文档片段或任何需要的元素。 该方法的显着之处在于它将实际上执行它在内部找到的<script> ,这既有用又危险。

所有这些都有相当细微的差别。 例如,HTML需要有效。 格式错误HTML就是行不通的。 格式错误的代码也可能会让您感到惊讶,例如将<tr>放入<table>会失败,因为它缺少<tbody>

公园在杆写入“创建从HTML字符串DOM节点” ,涵盖了我们这里,但在更多的细节和更多的陷阱中。

翻译自: https://css-tricks.com/snippets/javascript/inject-html-from-a-string-of-html/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值