0

我正在使用 WaveMaker 6.7 开发一个应用程序,该应用程序将在桌面和移动设备(如 iPhone)上运行良好,而无需为移动设备创建特殊代码。我发现使用此版本的 WaveMaker,移动显示器存在许多问题,例如:

  • 滚动效果不好
  • 即使小部件是使用以 px 为单位的宽度定义的,表单字段也会在屏幕宽度处被截断。
  • 网格功能不完整(缺少背景颜色并且无法按列标题排序。

我花了很多时间试图用 css 纠正这个问题,发现强制桌面版本覆盖手机的自动检测效果很好。今天的移动浏览器功能齐全,并不需要任何特殊的小部件。因此,通过传递以下参数,我能够覆盖对移动设备的检测并在 iPhone 上强制使用桌面版本:

wmmobile=desktop

http://xx.xx.xx.xx/WMappName/?wmmobile=desktop

这在我的 iPhone 上完美地显示了我的应用程序,它与我正在寻找的桌面版本完全相同。

我的问题是我可以通过编程方式获取桌面版本而无需通过wmmobile=desktop参数吗?这是我迄今为止尝试过的:

dojo.declare("Main", wm.Page, {
  if (wm.isMobile) {
    alert('Device Detected: ' + wm.device);
    wm.device='desktop';
  }
}

部分,但我认为在此过程中发生得太晚了。因为当我在没有参数的情况下使用以下内容访问我wmmobile的应用程序时,应用程序会出现wm.device=phone而不是desktop

http://xx.xx.xx.xx/WMappName/

所以,我希望能够使用上面的 URL 访问应用程序并强制desktopand override phone

任何人都知道如何在不通过参数的情况下解决这个问题wmmobile=desktop???

4

2 回答 2

0

覆盖设置wm.isMobile标志的行为的正确位置wm.device是在<Project Name>/webapps/boot.js脚本中。您可以在项目中对其进行修改,以按照您想要的方式以编程方式设置这些项目。

于 2015-11-18T16:39:52.883 回答
0

当我阅读文件 boot.js (rev 6.5.3) 时,您应该添加这一行 wm.device = "desktop";

在 wm.isMobile 和 wm.device 初始化之后的第 45 行这将覆盖刚刚进行的所有平板电脑或移动设备设置。

于 2018-01-12T14:07:31.127 回答