typescript 使用硬件后退按钮时,InAppBrowser未加载包含Cookie的页面

dpiehjr4  于 2023-02-05  发布在  TypeScript
关注(0)|答案(1)|浏览(114)

我有一个离子/Angular 的应用程序,其中我使用InAppBrowser插件来使用我公司的Web应用程序。
InAppBrowser通常工作正常,但在Web应用程序中有一个cookie,用于过滤Web应用程序中的某些列表。当用户过滤并输入(例如)列表中的特定客户端并使用硬件后退按钮返回时,过滤器将消失。从PC返回时,过滤器将保留,这意味着保持高速缓存。
当我使用DevTools(来自Google Chrome:chrome://inspect)来检查Ionic应用程序,cookie可以工作,但当我不使用它时,它就不能工作了,就像我上面提到的那样。似乎在InAppBrowser中执行硬件后退按钮时,缓存不会被维护或加载。所有这些都没有更改代码中的任何内容。
下面是我创建InAppBrowser的方法:

browser = this.iab.create(pageContentUrl, '_blank', 'location=no,zoom=no,fullscreen=no,clearcache=no,clearsessioncache=no,hidden=yes,toolbar=no');

所以我想知道是否有一种方法,当我点击硬件上的后退按钮时,它会加载带有cookie/缓存的上一页,或者它是否真的不应该加载任何东西,因为过滤器已经被应用,cookie已经被覆盖。
我试过将clearcache和clearsessioncache设置为"no",但似乎没有任何效果。然后用DevTools检查器检查,一切正常,但当我不使用它时,它就不工作了,就像DevTools缓存了一切,但当我不使用它时,它就不像我期望的那样工作了。
我期望发生的是,例如,当用户使用Web应用程序中的过滤器时,当硬件后退按钮被按下时,该过滤器(保存在cookie中)被维护,就像在PC上使用Web应用程序时一样。现在发生的是,当使用硬件后退按钮时,已经制作的过滤器消失了,但问题是cookie仍然存在,由于使用DevTools,因此无需对代码进行任何更改即可工作。
先谢谢你了。
我的Ionic信息:

Ionic:

   Ionic CLI                     : 6.20.1 (C:\Users\david\AppData\Roaming\npm\node_modules\@ionic\cli)
   Ionic Framework               : @ionic/angular 6.2.5
   @angular-devkit/build-angular : 14.2.1
   @angular-devkit/schematics    : 14.2.1
   @angular/cli                  : 14.2.1
   @ionic/angular-toolkit        : 6.1.0

Capacitor:

   Capacitor CLI      : 4.1.0
   @capacitor/android : 4.1.0
   @capacitor/core    : 4.1.0
   @capacitor/ios     : 4.1.0

Utility:

   cordova-res : 0.15.4
   native-run  : 1.6.0

System:

   NodeJS : v16.15.1 (C:\Program Files\nodejs\node.exe)
   npm    : 8.11.0
   OS     : Windows 10
    • 更新**

当用户使用过滤器和使用硬件后退按钮时,cookie/缓存没有正确加载,我关闭了应用程序,并再次尝试执行用例的相同步骤,一切正常,更重要的是,包含列表的页面已经通过cookie加载了过滤器。所以看起来第一次尝试时失败了,所以失败仍然存在。

vawmfj5a

vawmfj5a1#

您只需要在webview中启用JAVA脚本来允许缓存和cookie。

webview.getSettings().setJavaScriptEnabled(true);
 webview.getSettings().setDomStorageEnabled(true);

同时覆盖activity的后退按钮,将其用作webview上的后退按钮:

if(webView.canGoBack()){
        webView.goBack();
    }

相关问题