0

我正在通过引用链接“ http://public.dhe.ibm.com/software/mobile-solutions/worklight/docs/v610/05_03_Supporting_multiple_form_factors_using_Worklight_skins.pdf ”为 Android 设备的 Worklight Runtime Skins 创建一个示例。我已经更改了 JS、CSS 和 HTML 以在手机/平板电脑上应用皮肤,并且通过 Worklight Preview 测试同样可以正常工作。

但是当我尝试在真实设备中运行相同的代码时,我没有得到预期的正确输出。原因是 skinLoader.js 中的“getSkinName()”功能没有返回有效结果。我尝试使用以下代码来检测设备是移动设备还是平板电脑,但这两个函数都给出了无效的输出。

使用 UserAgent 检测设备://始终返回 'android.phone' 皮肤。

function getSkinName() { 
        var userAgent = navigator.userAgent; 
        var skinName = "default"; 
        alert(userAgent); 
        //android tablet 
        if(userAgent.toLowerCase().indexOf("android") != -1 && 
            userAgent.toLowerCase().indexOf("mobile") == -1){ 
            skinName = "default"; 
            alert("tablet!"); 
        } 
        //android phone 
        else if(userAgent.toLowerCase().indexOf("android") != -1 && 
            userAgent.toLowerCase().indexOf("mobile") != -1){ 
            skinName = "android.phone"; 
            alert("phone!"); 
        } 

        return skinName; 
} 

使用设备宽度检测设备://跨方向无法正常工作

 function getSkinName() { 
        var skinName = "default"; 
        var hres = screen.width || window.innerWidth || 320; 
        var ratio = window.devicePixelRatio || 1; 
        if (ratio == 0) { 
               ratio = 1; 
        } 
        var virtWidth = hres / ratio; 
        if (virtWidth >= 640) { 
              skinName = "android.tablet"; 
        } 
    return skinName; 
 } 

请分享有关纠正 getSkinName() 以使其正常运行的想法。

4

1 回答 1

0

您遇到的情况可能与此问题中提到的缺陷有关:IBM Worklight - "getSkinName is not defined"

Worklight 6.1.0.1 的最新 iFix 版本中提供了上述缺陷的修复程序。
如果您是 IBM 客户或业务合作伙伴,您可以从 IBM Fix Central(或通过 PMR 支持请求)获得它。

于 2014-06-02T04:29:58.343 回答