4

我正在为我的应用程序使用 Phonegap,我需要在 InAppBrowser 中显示一个外部链接,但看起来后面的按钮没有按预期工作:如果我在做

var ref = window.open('www.example.com/a.html' , '_blank', 'location=no')

a.html页面中,我单击了指向www.example.com/b.html的链接,下次单击返回时, InAppBrowser 已关闭,但它应该返回到a.html

您知道如何为 InAppBrowser 启用“导航历史记录”吗?

谢谢你。

4

3 回答 3

2

这可以通过调整“InAppBrowser.java”来实现。我知道这有点奇怪,但这是我唯一的选择。但是,我对 java 文件所做的那些小调整现在允许我在我的应用程序的页面中导航回来。

这是在 InAppBrowser.java 中进行的更改,在 showWebPage 方法中的“运行”方法中,将有一个监听器代码,如下所示:

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

在该行下方添加以下代码,

dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {                   
@Override
     public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
         if (event.getAction()!=KeyEvent.ACTION_DOWN)
             return true;               
         if(keyCode==KeyEvent.KEYCODE_BACK){
             goBack();
             return true;
         }else {
             return false;
          }
      }
});
于 2014-05-15T05:47:44.820 回答
0

您可以收听后退按钮(假设您使用的是 android)并将 history.back 调用注入 InAppBrowser。

document.addEventListener("backbutton", function(){
    //do some checks to make sure the browser is open or 
    //whatever else you may need first, then:
    cordova.exec(null, null, "InAppBrowser", "injectScriptCode", ["history.back()"]);
}, false);
于 2013-12-10T19:29:14.993 回答
0

除了@Suresh Raja 写的内容之外,引用的代码不再存在。您可以在此代码和平之后添加建议的改进代码(以下):

dialog.setInAppBroswer(getInAppBrowser());

建议改进代码:

dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {                   
@Override
    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
          if (event.getAction()!=KeyEvent.ACTION_DOWN)
              return true;               
          if (keyCode==KeyEvent.KEYCODE_BACK){
              if (inAppWebView.canGoBack()) {
                  inAppWebView.goBack();
              }
              else {
                  closeDialog();
              }
              return true;
          } else {
                return false;
          }
     }
});

这将在最后一次后按时关闭应用程序(这可以解决 inAppBrowser 的另一个问题。希望对您有所帮助

编辑:您应该添加import android.content.DialogInterface来完成这项工作。

于 2014-12-12T23:32:42.397 回答