【问题标题】:Forcing desktop display on a mobile device强制在移动设备上显示桌面
【发布时间】:2018-01-12 22:07:31
【问题描述】:

我正在使用 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 访问应用程序并强制使用 desktop 并覆盖 phone

任何人都知道如何绕过这个问题而不必通过wmmobile=desktop 参数???

【问题讨论】:

    标签: javascript iphone mobile wavemaker


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2017-10-03
        • 1970-01-01
        • 1970-01-01
        • 2016-04-04
        • 2018-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-01
        相关资源
        最近更新 更多