文档 / 运行环境
运行环境
Web 应用运行在独立 iframe 内。宿主提供主题、JavaScript Bridge 和应用包加载器,应用只负责自己的界面与逻辑。
沙箱边界
iframe 使用 sandbox="allow-scripts",不开放同源权限。应用不能获取宿主的登录 Cookie 或直接访问父页面 DOM。
所有数据与系统能力通过 platform.* 调用,宿主代为处理。不要直接使用 fetch、XMLHttpRequest、localStorage、Cookie 或自定义 window.parent 通信;不要从 CDN 引入脚本、CSS、字体,也不要加载未知代码。
应用不能直接联网,数据访问必须通过 platform.*。Web 采用可信外层容器与独立的 sandbox srcdoc:外层禁止 iframe 导航到 URL,两份 CSP 同时约束脚本执行和资源来源,阻断 fetch/XHR、外部资源、表单、跳转及嵌套页面脚本。包内 JS/CSS 和现有 DOM 界面保持支持。当前没有应用网络请求白名单 API;不要使用 iframe、外部 CDN、WebRTC 或直接跳转实现功能。
可用的编程环境
- 原生 JavaScript、DOM、事件和 Promise。
- 应用包中的
.js模块、.css文件和基础app.json。 platform.ui、platform.data和能力一览中的宿主接口。
没有 Node.js、npm 包安装、React、Vue、TypeScript 或 JSX 编译步骤。若使用开发期编译工具,提交的结果仍然必须符合应用包格式。
表单默认提交会被拦截。请通过按钮事件或自己的 submit 处理逻辑执行操作,不要依赖页面刷新。
启动和生命周期
打开应用后加载文件包,执行入口函数;入口成功返回后,宿主认为应用准备完成。20 秒内没有准备完成会显示打开超时,因此不要在入口等待无限循环或长时间后台任务。
切换标签、切换对话不会销毁应用 iframe。关闭标签或刷新浏览器会销毁内存状态,再次打开时重新执行入口。未提交的输入仅保留在应用内存中;需要跨刷新恢复的草稿必须通过 platform.data 保存到准备好的数据集,不能使用浏览器 localStorage。
当前没有内置 onShow、onHide、页面栈或后台任务回调。多页面切换由应用自己组织,参考多文件待办。
跨端设计
platform.host 返回实际宿主:Web 为 "web",Apple 与 Android 容器分别为 "ios"、"macos"、"android"。公共运行时 v1 已冻结;仓库提供 iOS 产品源码及三端测试宿主,iOS 真机验收与公开分发尚未完成,macOS/Android 完整产品和 Windows 仍为后续目标。应用只通过 JSB 使用宿主能力,用 platform.can 检查当前实例的真实能力;测试宿主存在不代表对应产品已经发布。
使用 platform.can(name) 检查能力,并为缺失能力提供说明或替代操作。布局应适应窄屏、触控与不同安全区域,不能仅依赖鼠标 hover。