IBM Worklight - 实现自定义后退/前进按钮

Posted

技术标签:

【中文标题】IBM Worklight - 实现自定义后退/前进按钮【英文标题】:IBM Worklight - implemeting custom back/forward buttons 【发布时间】:2013-11-30 18:27:51 【问题描述】:

在我的应用程序中,我正在为 iO 和 android 环境创建一个 WL.TabBar 对象,例如导航菜单。为了模拟 jquery 的后退按钮,我使用了一个像这样的简单函数

function back()
   history.back();
   return false;


function forward()
   history.forward();
   return false;

ios 模拟器中它可以工作,但在 Android 中没有。我使用的是 Android 2.2 虚拟设备。

编辑: 这是android/js/[AppName].js文件上的代码,同样是iOs环境。

function wlEnvInit()
wlCommonInit();
// Environment initialization code goes here

   navigation.init();
   navigation.addItem("item1",back,"Back",);
   navigation.addItem("item2",forward,"Forward",);
   navigation.setVisible(true);



var navigation = WL.TabBar;

function back()
   window.history.back();
   return false;


function forward()
   window.history.forward();
   return false;

【问题讨论】:

看不懂WL.TabBar上下文中的这段代码?比如,屏幕底部的箭头式按钮?您可以尝试从以下示例中获取代码并对其进行调整以适合您的:构建多页应用程序 - ibm.com/developerworks/mobile/worklight/… 您在 LogCat 中看到任何错误吗? @IdanAdar 您评论中的示例是指具有多个.html 文件的多页应用程序。我使用带有data-role: page 的单个文件和每个页面的ID。我看到了 LogCat 但没有错误,当我按下选项卡的按钮时,它向我显示这条消息 Trying to fire onNativeReady onMessage(onNativeReady,null) onMessage(onPageFinished,file:///data/data/com.Discovergin_Ragusa/files/www/default/Discovergin_Ragusa.html) @IdanAdar 我还在我的安卓手机(4.0.4)上安装了.apk,它可以工作。好像是android api版本的问题。。 请为问题添加更完整的实现(WL.TabBar 代码)。 【参考方案1】:

这个问题似乎是 Android 2.x 独有的。您的代码在 Android 4.x 上运行良好。出于某种原因,windows.back()/windows.forward() 在 Android 2.x 上直接从标签栏单击处理程序中调用时无效。您可以通过使用短暂的超时来解决此问题:

function back() 
setTimeout(function() 
    window.history.back();
, 100);
return false;


function forward() 
setTimeout(function() 
    window.history.forward();
, 100);
return false;

【讨论】:

以上是关于IBM Worklight - 实现自定义后退/前进按钮的主要内容,如果未能解决你的问题,请参考以下文章

jQuery (IBM Worklight) 页面导航和后退按钮

IBM Worklight - 自定义认证

IBM Worklight 5.0.6 - 在推送通知错误时播放自定义声音

IBM Worklight 5.0.5 - 在推送通知上播放自定义声音

IBM Worklight 6.1 - 如何自定义 WL.BusyIndi​​cator 的高度和宽度?

如何使用自定义 IN 参数在 IBM Worklight SQL 适配器中调用存储过程