在 TMS Web Core 中,可通过 WEB 单元的 window.screen 对象以纯 Delphi 方式安全访问浏览器屏幕尺寸,无需内联 JavaScript,代码更类型安全、可维护性更强。
在 tms web core 中,可通过 `web` 单元的 `window.screen` 对象以纯 delphi 方式安全访问浏览器屏幕尺寸,无需内联 javascript,代码更类型安全、可维护性更强。
TMS Web Core 是基于 WebAssembly 的 Delphi Web 框架,运行于浏览器环境,因此无法使用 VCL 或 FMX 中的原生 TScreen 类(如 FMX.Forms.TScreen)。虽然通过 asm 块直接调用 screen.width 和 screen.height 可行,但混合 JavaScript 会削弱类型检查、增加调试难度,并可能引发跨浏览器兼容性隐患。
推荐做法是使用 WEB 单元中封装的 window 对象——它提供了对浏览器全局 Window 接口的安全、强类型化访问。window.screen 返回一个 JSObject,其 width 和 height 属性可通过字符串索引(如 ['width'])获取,再经 String() 显式转换为 Delphi string 类型:
uses WEB; function GetScreenResolution: string; begin Result := String(window.screen['width']) + 'x' + String(window.screen['height']); end;
✅ 优势说明:
- ✅ 完全 Delphi 语法,无 asm 块,支持 IDE 智能提示与编译时检查;
- ✅ 自动处理 JavaScript 值到 Delphi 类型的桥接(String() 隐式调用 JSValue.ToString);
- ✅ 兼容所有主流浏览器(Chrome、Firefox、Edge、Safari),底层由 TMS Web Core 运行时保障;
- ✅ 可轻松扩展为返回 TPoint 或记录类型(如 TRect),便于后续逻辑复用。
⚠️ 注意事项:
- 该方法仅在浏览器上下文中有效(即页面已加载、window 已就绪),请确保在 OnCreate、OnReady 或事件处理器中调用,避免在初始化过早阶段访问;
- window.screen 返回的是设备的可用屏幕尺寸(单位:CSS 像素),不含任务栏/地址栏等 UI 占位区域,若需视口尺寸,请改用 window.innerWidth / window.innerHeight;
- 如需响应式适配,建议结合 window.addEventListener('resize', ...) 监听尺寸变化,而非仅静态读取一次。
综上,window.screen['width'] 和 window.screen['height'] 是 TMS Web Core 中获取屏幕分辨率最简洁、规范且面向未来的 Delphi 原生方案。











