我正在通过引用链接" 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()以正常运行的想法。
答案 0 :(得分:0)
您遇到的问题可能与此问题中提到的缺陷有关:IBM Worklight - "getSkinName is not defined"
针对Worklight 6.1.0.1的最新iFix版本中提供了针对上述缺陷的修复 如果您是IBM客户或业务合作伙伴,则可以从IBM Fix Central(或通过PMR支持请求)获取它。