0

我注意到每次在 Android 应用程序中初始化 Worklight/Cordova 时都会调用 cordovaInitCallback。特别是,它调用 Cordova 的“clearHistory”来清除 WebView 历史记录。当我尝试在多页应用程序中使用 window.history 时,这一直是一个问题,因为在从一页到另一页的初始化过程中,历史总是被重置。

由于评论表明此 clearHistory 调用的目的是防止在直接更新场景中返回旧页面,因此是否可以通过 Android 环境检查加强该条件,以便仅在刚刚发生直接更新时调用它? 例如,我能想到的一种情况是当connectOnStartup=false 时,就不会发生直接更新。

wlclient.js:

 var cordovaInitCallback = function(returnedData) {
            onEnvInit(options);
            if (WL.Client.getEnvironment() == WL.Env.ANDROID) {
                if (returnedData !== null && returnedData !== "") {
                    WL.StaticAppProps.APP_VERSION = returnedData;
                }
                // In development mode, the application has a settings
                // widget in which the user may alter
                // the application's root url
                // and here the application reads this url, and replaces the
                // static prop
                // WL.StaticAppProps.WORKLIGHT_ROOT_URL
                // __setWLServerAddress for iOS is called within
                // wlgap.ios.js's wlCheckReachability
                // function because it is an asynchronous call.

                // Only in Android we should clear the history of the
                // WebView, otherwise when user will
                // press the back button after upgrade he will return to the
                // html page before the upgrade
                if (**WL.Env.ANDROID == getEnv()**) {
                    cordova.exec(null, null, 'Utils', 'clearHistory', []);
                }
            }

我目前正在使用 Worklight 5.0.5,并检查了 5.0.5.1 中是否存在同样的情况。

谢谢!

4

1 回答 1

1

Worklight 的架构设计是 SPA(单页应用程序)。
cordovaInitCallback在应用程序的生命周期中应该只调用一次。
也就是说,如果你愿意,你可以覆盖它。

于 2013-02-28T11:48:28.457 回答