Worklight运行时外观 - getSkinName无法正常工作

时间:2014-05-23 09:38:36

标签: ibm-mobilefirst worklight-runtime worklight-skins

我正在通过引用链接" 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测试它也可以正常工作。

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

使用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()以正常运行的想法。

1 个答案:

答案 0 :(得分:0)

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

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