MissSixty
2023-01-14 20:29:26 +08:00
这个需求目的是后端返回 html 字符串前端调用浏览器打印,打印前在字符串中插入特定内容<div>和改变字符串中 table 的样式,目前总结了几种方法。
1 、在 HTML 末尾加段<script>,该 HTML 加载完就会自行 js 并做修改:这种行为有些危险,html 内容是用户随便写的。
2 、后端在 html 里留两个槽,直接 replace:这就相当于把问题丢给了后端去解决,既然都能留槽了那直接让后端来做多好。留槽和插入 div 也没啥区别。
3 、正则:改变 table 属性挺好用,但插入特定内容的 div 有不确定性,不敢保证写出的正则就那么强大。
4 、document.implementation.createHTMLDocument():内存中创建空白网页,然后使用 documentElement.innerHTML 来存放内容,接着就使用常规 dom 操作。目前使用此方法。
5 、innerHTML:此方法使用跟第 2 个类似,但它会自动去掉 html 、head 、body 标签,不是完整的网页了。
6 、new DOMParser():使用起来很简单,也是个能解决问题的方法,但综合考虑还是第 2 个好一些。