InAppBrowser的executeScript回调根本没有触发

4
我正在使用Ionic和ngCordova构建混合应用程序。在应用程序的登录流程中,我将一个页面从服务器返回到InAppBrowser插件。我需要在我的Ionic应用程序中读取返回页面的一些值。
通常的方法是在“loadstop”事件上调用executeScript,并设置回调函数以便该脚本返回某些内容。正如您在以下代码中所看到的,我已经设置了这个。然而,无论我尝试什么,iOS模拟器,Android模拟器都不会触发回调。
这是打开Google网站的页面在InAppBrowser中。
 $cordovaInAppBrowser.open('http://google.com', '_blank', options)
    .then(function (event) {
      //alert('succed')
    })
    .catch(function (event) {
      //alert('errored')
    });

以下是加载停止事件句柄。1+1脚本被成功注入,因为我可以看到警报标识着2。然而,回调函数根本没有被调用!
 $rootScope.$on('$cordovaInAppBrowser:loadstop', function (e, event) {
      $cordovaInAppBrowser.executeScript(
        {
          code: "alert(1+1);"
        },
        function (values) {
          alert('add completed');
        });
});

我尝试了多个模拟器,但它们都无法工作。提前感谢您的帮助。
1个回答

2
问题在于executeScript本身就是一个promise,所以为了使您的代码正常工作,您必须编写类似以下的内容:
$rootScope.$on('$cordovaInAppBrowser:loadstop', function (e, event) {
  $cordovaInAppBrowser.executeScript(
    {
      code: "alert(1+1);"
    }).then(
        function (values) {
             alert('add completed');
        });
    });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接