我正在通过引用链接“ 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() 以使其正常运行的想法。