Iframe 区块
介绍
IFrame 区块允许将外部网页或内容嵌入到当前页面中。 用户可以通过配置 URL 或直接插入 HTML 代码,轻松将外部应用集成到页面。使用 HTML 页面时,用户可以灵活定制内容,满足特定展示需求,这种方式特别适合需要定制化展示的场景,无需跳转即可加载外部资源,提升用户体验和页面的交互效果。
安装
内置插件,无需安装。
添加区块

配置 URL 或 Html 直接将外部应用嵌入。

模板引擎
字符串模板
默认的模板引擎
Handlebars

更多内容参考 Handlebars 模板引擎文档
传入变量
html 支持变量解析
支持从变量选择器中选择当前区块上下文的变量


支持通过代码编写的方式向应用注入变量并使用
还可以通过代码将自定义变量注入到应用中,并在 HTML 中使用它们。例如,使用 Vue 3 和 Element Plus 创建一个动态日历应用:

示例:使用 React 和 Ant Design (antd) 创建的简单日历组件,结合了 dayjs 来处理日期

url 支持变量

更多关于变量内容参考变量文档
使用 JS 区块创建 Iframe (NocoBase 2.0)
在 NocoBase 2.0 中,您可以使用 JS 区块动态创建 iframe,从而获得更多控制。这种方法为自定义 iframe 行为和样式提供了更好的灵活性。
基础示例
创建一个 JS 区块并使用以下代码创建 iframe:
关键要点
- ctx.element: 当前 JS 区块容器的 DOM 元素
- sandbox 属性: 控制 iframe 内容的安全限制
allow-scripts: 允许 iframe 执行脚本allow-same-origin: 允许 iframe 访问其自身源
- replaceChildren(): 用 iframe 替换容器的所有子元素
带加载状态的高级示例
您可以通过加载状态和错误处理来增强 iframe 创建:
安全注意事项
使用 iframe 时,请考虑以下安全最佳实践:
- 使用 HTTPS: 尽可能始终通过 HTTPS 加载 iframe 内容
- 限制 Sandbox 权限: 仅启用必要的 sandbox 权限
- 内容安全策略: 配置适当的 CSP 头
- 同源策略: 注意跨域限制
- 可信来源: 仅从可信域加载内容

