我注意到每次在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中存在的相同情况。
谢谢!
答案 0 :(得分:1)
Worklight的建筑设计是SPA(单页应用程序)
cordovaInitCallback
只应在应用程序的生命周期中调用一次
也就是说,如果您愿意,可以覆盖它。