InAppBrowser executeScript回调根本没有触发

时间:2015-08-23 23:11:46

标签: inappbrowser ngcordova

我正在创建使用Ionic和ngCordova构建混合应用程序。在应用程序登录工作流程中,我将页面从服务器返回到InAppBrowser插件。我需要在我的Ionic应用程序中从返回的页面中读取一些值。

通常的方法是在' loadstop'上调用executeScript。 event,并在该脚本返回某些内容时设置回调。我可以在以下代码中看到这种设置。但是,无论我尝试什么,iOS模拟器,Android模拟器的回调都没有解雇。

以下是在InAppBrowser中打开Goog​​le网站的页面。

 $cordovaInAppBrowser.open('http://google.com', '_blank', options)
    .then(function (event) {
      //alert('succed')
    })
    .catch(function (event) {
      //alert('errored')
    });

以下是loadstop事件处理程序。 1 + 1脚本被正确注入,因为我确实看到了2的警报。但是根本没有调用回调函数!!

 $rootScope.$on('$cordovaInAppBrowser:loadstop', function (e, event) {
      $cordovaInAppBrowser.executeScript(
        {
          code: "alert(1+1);"
        },
        function (values) {
          alert('add completed');
        });
});

我尝试了多个模拟器,但它们都没有工作。提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

问题是executeScript本身就是promise,所以要使代码正常工作,你必须写下这样的内容:

$rootScope.$on('$cordovaInAppBrowser:loadstop', function (e, event) {
  $cordovaInAppBrowser.executeScript(
    {
      code: "alert(1+1);"
    }).then(
        function (values) {
             alert('add completed');
        });
    });