我试图保持我的webview隐藏,直到URL完成加载

i'm trying to keep my webview hidden till the URL is finished loading

本文关键字:直到 URL 加载 隐藏 webview 我的      更新时间:2023-09-26

我有一个ionic应用程序,将外部站点加载到webview中,每次在url完成加载之前加载webview时,我都会看到一个空白页面。我想webview显示只有在url完成加载后。我也有一个事件监听器loadstart,这意味着关闭窗口时,url被击中并返回到ionic应用程序的主屏幕,这在我的模拟器上工作,但在我的真实设备上,它只是显示一个空白的页面与符号。

   $scope.login = function()
      {
        //check if network is connected before sending initial request
        if(monitor.isOffline())
        {
          var alertPopup = $ionicPopup.alert({
            title: 'Network Error!',
            template: "Your Network is Offline, please connect and try again"
          });
        }
        //show spinner while loading page
        $scope.show = function() {
          $ionicLoading.show({
            template: '<p>Loading...</p><ion-spinner></ion-spinner>'
          });
        };
        //hide spinner
        $scope.hide = function(){
          $ionicLoading.hide();
        };

        //send initial request
        AuthService.login($scope.user).then(
          function(home)
          {
            $scope.show($ionicLoading);
            if(monitor.isOnline())
            {
              $scope.show($ionicLoading);
              var ref = window.open(home, '_blank', 'location=no,toolbar=no');
              ref.addEventListener('loadstart', function (event)
              {
                if(event.url == "http://mobile.map.education/logout" )
                {
                  ref.close();
                }
              });
              ref.addEventListener('loaderror', function (event)
              {
                var alertPopup = $ionicPopup.alert({
                  title: 'Network Error',
                  template: "Oops,Error with your network"
                });
                ref.close();
              });
              $scope.hide($ionicLoading);
              //watch network state
              monitor.startWatching();
            }
            if(monitor.isOffline())
            {
              var alertPopup = $ionicPopup.alert({
                title: 'Network Error',
                template: "Oops,Error with your network"
              })
            }
          },
          function (errMsg)
          {
            var alertPopup = $ionicPopup.alert({
              title: 'Login failed!',
              template: errMsg
            });
          })
          .catch(function()
          {
            var alertPopup = $ionicPopup.alert({
              title: 'Login failed!',
              template: 'Server not responding'
            })
              .finally(function ($ionicLoading)
              {
                $scope.hide($ionicLoading);
              });
          });
      };

我认为这只适用于InAppBrowserPlugin,但您可以使用hidden=yes打开窗口

var ref = window.open(home, '_blank', 'location=no,toolbar=no,hidden=yes');

:

ref.addEventListener('loadstop', function(){
   ref.show();
});

查看这里的文档:https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-inappbrowser/