IBM Worklight 6.0 – WL.Client.reloadApp()在Windows Phone 8中不起作用

我们正在使用Worklight 6.0.0企业版,目前正在为Android,BB,Windows Phone 8和iOS构建混合应用程序。

在单击注销按钮时调用WL.Client.reloadApp()时,我们当前收到以下错误。 这适用于除WP8之外的所有操作系统。

CordovaBrowser_NavigationFailed :: ///www/default/www/default/pages/www/default/pages/www/default/pages/www/default/pages/myaccount.html错误:InvokeScriptCallback中的exception::发生了未知错误。 错误:80020006。错误:InvokeScriptCallback中的exception::发生了未知错误。 错误:80020006。

这是我们的退出function:

 logout() { window.localStorage.clear(); $.mobile.changePage("../MainPage.html"); $('#username').val(''); $('#password').val(''); $("#Footer").show(); $("#ui_logoutlst").hide(); $("#homeBt_menu").hide(); $('ul#QuickLinks li').width('50%'); }; 

2014年4月8日更新

我使用了您在之前的答案中提供的示例项目 。
这是一个更新版本: WindowsTestApp

我做了什么:

  1. 删除了wlCommonInit() path变量的使用。

  2. $.mobile.changePage()添加了changeHash: false选项。

    例如: $.mobile.changePage("Pages/MyAccount.html", { changeHash: false });

  3. 在WindowTestApp.html中

    HEAD元素中删除了这一行:

  4. 在js \ jquery-1.10.2.js中:

    xhr.open(s.type,s.url,s.async);

    改成

    s.url = s.url.replace(“x-wmapp0:///”,“”);
    xhr.open(s.type,s.url,s.async);

在使用WL.Client.reloadApp()情况下,第3步正确使用changePage

步骤4似乎是jQuery / jQuery Mobile中的一个错误,特定于处理Windows Phone中的文件位置。

查看编辑过的评论和问题,问题可能出在所使用的路径上。

查看IBM Worklight Getting Started网页中提供的多页示例项目。 它包含WP8的特殊处理,您可能需要将其应用于您的注销function。

构建多页面应用程序培训模块
多页示例项目

  • 见幻灯片8和9
  • 幻灯片8讨论了下面的实施变化
  • 幻灯片9讨论了您必须在jQuery Mobile的JS中执行的更改,以使页面导航工作。
  • 由于您使用的是jQuery Mobile,请查看此问题及其答案: IBM Worklight v 5.0.6 – 无法在Windows Phone 7.5环境中导航多页

请注意如何专门为Windows Phone 8处理路径。
common \ main.js

 var path = ""; function wlCommonInit(){ // Special case for Windows Phone 8 only. if (WL.Client.getEnvironment() == WL.Environment.WINDOWS_PHONE_8) { path = "/www/default/"; } ... ... } 

您现在需要执行以下两项操作之一:

  • 考虑WP8的路径
  • 如果你使用它,改变jQuery Mobile的JS