Worklight Runtime Skins - getSkinName не работает должным образом
Я создаю образец для Worklight Runtime Skins для устройства Android по ссылке " http://public.dhe.ibm.com/software/mobile-solutions/worklight/docs/v610/05_03_Supporting_multiple_form_factors_using_Worklight_skins.pdf". Я изменил 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 ответ
То, что вы испытываете, может быть связано с дефектом, упомянутым в этом вопросе: IBM Worklight - "getSkinName не определено"
Исправление для упомянутого дефекта доступно в последней версии iFix для Worklight 6.1.0.1.
Если вы являетесь клиентом или деловым партнером IBM, вы можете получить его в IBM Fix Central (или по запросу поддержки PMR).