使用Cordova 3.6的InAppBrowser窗口中的后退按钮行为?

时间:2014-10-07 08:28:24

标签: android cordova cordova-3 inappbrowser

我正在使用cordova 3.6编写移动应用程序,此应用程序只需打开与我的网站移动版本对应的外部网址

var ref = window.open('http://www.stackoverflow.com', '_self', 'location=no');

如果使用_self作为目标,后退按钮行为很好,因为它在浏览页面中正常工作但问题是历史堆栈中的最后一个回到我的索引页面然后再次打开我的网址!此外窗口上的事件也不起作用。怎么退出?

var ref = window.open('http://www.stackoverflow.com', '_blank', 'location=no');

如果使用_self作为目标,则后退按钮的行为是不一样的。浏览页面中无法返回,只需返回索引页面,无论我们是什么。如何修改行为以使其与_self?

相同

我坚持使用这两种解决方案:(

注意:我看到了这个similar question但建议的代码

dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
                    public void onDismiss(DialogInterface dialog) {     
                        closeDialog();
                    }
});

在cordova InAppBrowser.java中不再存在

1 个答案:

答案 0 :(得分:3)

我为" _blank"找到了一个有效的解决方案。感谢Kris Erikson在this post

上的回答,使用了cordova 3.6的选项目标

通过这些修改,硬件后退按钮可在InAppBrowser中的页面内工作。

我在此后复制他的工作解决方案

转到src / com / org / apache / corodova / inappbrowser目录并编辑InAppBrowserDialog.java: 变化

public void onBackPressed () {
   if (this.inAppBrowser == null) {
      this.dismiss();
   } else {
      // better to go through the in inAppBrowser
      // because it does a clean up            
      this.inAppBrowser.closeDialog();           
   }
}

public void onBackPressed () {
   if (this.inAppBrowser == null) {
      this.dismiss();
   } else {
      if (this.inAppBrowser.canGoBack()) {
         this.inAppBrowser.goBack();
      }  else {
         this.inAppBrowser.closeDialog();
      }
   }
}

然后转到InAppBrowser并找到goBack函数,更改:

/**
* Checks to see if it is possible to go back one page in history, then does so.
*/
private void goBack() {
   if (this.inAppWebView.canGoBack()) {
      this.inAppWebView.goBack();
   }
}

/**
* Checks to see if it is possible to go back one page in history, then does so.
*/
public void goBack() {
   if (this.inAppWebView.canGoBack()) {
      this.inAppWebView.goBack();
   }
}

public boolean canGoBack() {
   return this.inAppWebView.canGoBack();
}

如果您找到更好的解决方案,请避免修改java代码

,请发布