javascript - HTML 未在 div 内格式化生成错误
问题描述
我有一个 cfm (ColdFusion) 页面,在其中我#userHTML#
在我的 div 中显示变量的内容。
<cfoutput>
<div class="panel panel-default" style="margin-left: 20px; margin-right: 20px;">
<div id="myDiv" class="panel-body">
#userHTML#
</div>
</div>
<br/><br/>
<div class="col-sm-8 col-sm-offset-2">
<!-- Some Code Here -->
</div>
</cfoutput>
有时#userHTML#
变量包含无效的 HTML。它可能包含<div>
未关闭的打开标签,这使得我拥有的其余代码<div class="col-sm-8 col-sm-offset-2">
位于顶部 div ( id="myDiv"
)
有没有办法让这个工作,这样变量包含什么并不重要#userHTML#
,它总是在 div 里面有它的内容"myDiv"
?
解决方案
浏览器旨在本地解析该 HTML。如果您需要 XML,它将应用 XML 规则,并且导入格式不正确的 XML 将出错。如果您使用 HTML,它会尽其所能自动纠正错误(就像所有 HTML 文档一样。
要实现这一点,您可以这样做(请参阅代码中的注释):
// Create a new HTML Document (DOM)
var doc = document.implementation.createHTMLDocument ('', 'html', null);
// Add the body
var body = document.createElementNS('', 'body');
// Place the body into the DOM
doc.documentElement.appendChild(body);
// Get body parsed / corrected
body.innerHTML = "<div>This is a test";
// Now place that content into your existing DOM
document.getElementById('test').innerHTML = body.innerHTML;
// Get rid of the extra DOM
doc = null;
<div id="test">Test Div</div>
如果您检查输出 HTML,您将看到</div>
已自动添加关闭。
推荐阅读
- tarantool - Tarantool 查询问题
- r - 无法使用 geom_flat_violin() 创建“平面小提琴图”
- c++ - 从 cudaMalloc 访问 CUDA 数组时出错
- python - 我怎样才能让按键第一次做一件事,第二次做另一件事?
- laravel - 从数组列数据库中获取第一个值
- android - 如何使用 MediaStore api 检索歌曲并播放?另外,获取它的封面,如果可能的话,读取它的输入流?
- xamarin.forms - Xamarin Forms 如何在 Android 和 iOS 的 XAML 文件中调用不同的渲染器
- java - 从java中的列表中获取列表?
- html - HTML5:以前显示的图像不再出现
- google-colaboratory - Google Colab Pro 在任何州都可用吗?