Phonegap - navigator.app.backHistory() not working on HTML back button

匿名 (未验证) 提交于 2019-12-03 02:31:01

问题:

In my app i am using phonegap 2.6.For back button, I am using the following function

document.addEventListener("backbutton", onBackKeyDown, false);  function onBackKeyDown() {     alert("hello");     navigator.app.backHistory(); }  document.addEventListener('deviceready', onDeviceReady, true); 

The above function works fine when I click on the device's hardware back button. But when I click on the back button it is not working.

I have designed my back button as below:

         Phone 

But this button is working fine for this navigator.app.exitApp(); (application exit).

//Working Fine function onBackKeyDown() {     navigator.app.exitApp(); }  //Not Working function onBackKeyDown() {     navigator.app.backHistory(); } 

but not working for navigator.app.backHistory();.

回答1:

I have tried 3 separate things when I faced the same situation:

  • window.history.back()

  • navigator.app.backHistory();

  • History.go(-1);

Individually, none of these solve the problem. I put all 3 things together and much to my surprise it worked. I really don't know what is behind it.

Then I decreased to two functions and removed:

  • window.history.back()

Now I am using this function and it is working fine.

//Works Fine function onBackKeyDown() {     history.go(-1);     navigator.app.backHistory(); } 


回答2:

If you use the attribute data-rel="back" on an anchor, any clicks on that anchor will mimic the back button, going back one history entry and ignoring the anchor's default href.



回答3:

it depends where you are: on my windowsphone 8.1 lumia 925, it works history.go(-1);, while navigator.app.backHistory(); causes an exception before crashing.

On my Android (I believe the majority), navigator.app.backHistory(); works properly.



回答4:

Solved! Stop getting "TypeError: navigator.app is undefined"

A function I created that will first check what device you're on and then apply the relevant script:

function onBackKeyDown() {     var userAgent = navigator.userAgent || navigator.vendor || window.opera;     if (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i) || userAgent.match(/iPod/i)) {         // IOS DEVICE         history.go(-1);     } else if (userAgent.match(/Android/i)) {         // ANDROID DEVICE         navigator.app.backHistory();     } else {         // EVERY OTHER DEVICE         history.go(-1);     } } 

Call function by adding this to your back link/button:

onclick="onBackKeyDown()" 


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!