javascript - 为什么我的 iframe 将 html 内容视为文本
问题描述
为什么iframe
将我的 html 内容视为文本内容。
问题:我想用它的标签呈现整个 html,而不是作为文本。
下图显示了我的问题:
我的代码:
$('#resultBtn').off('click');
$('#resultBtn').on('click',function(){
var html = '<p id="pclick">Click me to see Alert</p>'
var javascript = `document.querySelector('#pclick').on('click',function(){
alert('clicked me');
})`;
var bodyContent = html +`<script>${javascript}<\/script>`;
$("#result_iframe").contents().find("body").html(`${bodyContent}`);
});
#result_iframe{
width: 400px;
height: 200px;
background:#eaeaed;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="resultBtn">see Result</button>
<iframe id="result_iframe" frameborder="0"></iframe>
解决方案
此代码正在尝试将 HTML 内容添加到iframe
:
$("#result_iframe").contents().find("body").html(`${bodyContent}`);
iframe
但是,不支持向 an 添加文本节点或 HTML 元素。来自iframe 的 HTML5 规范:
4.8.5 iframe 元素
内容模型:
无
在这种情况下,这就是Nothing的含义:
当元素的内容模型为空时,该元素必须不包含文本节点(除了元素间空白)和元素节点。
鉴于iframe
不支持向 an 添加内容,使用不同的方法可能是个好主意。
推荐阅读
- swift - 尝试构建 NetworkExtensions DataFilteringe 示例:个人开发团队不支持系统扩展?
- azure-devops - azure blob 与 apache nifi 的集成
- java - 流在java中关闭
- python - 如何异步处理异步生成器
- java - 如果在继承过程中只创建一个对象,那么 super 关键字引用的是什么?
- typescript - 如何在打字稿中使用或使用变量?
- flutter - 返回类型 'Future
Function()' 不是“未来” ',根据闭包上下文的要求 - html - 如何垂直对齐表格元素中的元素?
- qt - 带有图像的 QT 按钮如何透明/不透明
- deployment - 零停机 Google Compute Engine (GCE) 部署