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

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

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

  1. 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信息:

  1. Ionic:
  2. Ionic CLI : 6.20.1 (C:\Users\david\AppData\Roaming\npm\node_modules\@ionic\cli)
  3. Ionic Framework : @ionic/angular 6.2.5
  4. @angular-devkit/build-angular : 14.2.1
  5. @angular-devkit/schematics : 14.2.1
  6. @angular/cli : 14.2.1
  7. @ionic/angular-toolkit : 6.1.0
  8. Capacitor:
  9. Capacitor CLI : 4.1.0
  10. @capacitor/android : 4.1.0
  11. @capacitor/core : 4.1.0
  12. @capacitor/ios : 4.1.0
  13. Utility:
  14. cordova-res : 0.15.4
  15. native-run : 1.6.0
  16. System:
  17. NodeJS : v16.15.1 (C:\Program Files\nodejs\node.exe)
  18. npm : 8.11.0
  19. OS : Windows 10
    • 更新**

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

vawmfj5a

vawmfj5a1#

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

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

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

  1. if(webView.canGoBack()){
  2. webView.goBack();
  3. }

相关问题