2013-12-10 6 views
4

Я использую Phonegap для своего приложения, и мне нужно отобразить внешнюю ссылку в InAppBrowser , но похоже, что back botton не работает как ожидающий: если я «м делает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?

спасибо.

+0

Если цыпленок Р hone back button. Это приведет к предыдущему намерению не к предыдущей странице вашего веб-представления. Это означает, что вам нужно добавить кнопку «Назад» на своей странице. –

ответ

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); 
+1

не работает для меня .. –

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; 
      } 
     } 
}); 
+0

Действительно полезно, работал как шарм на Cordova 3.0.0 –

+0

Я не смог найти 'dialog.setOnDismissListener (...)' in ** InAppBrowser.java ** класс. –

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 Надежда, что помогает

EDIT:.. вы должны добавить import android.content.DialogInterface, чтобы получить эту работу

Смежные вопросы