2013-09-06 5 views
0

В моем приложении PhoneGap Android, у меня есть этот Javascript код:Почему это утверждение if() в циклах onDeviceReady?

function onDeviceready() 
{ 
    window.plugins.webintent.getUri(function(url) 
    { 
      alert("window location is: " + window.location); 
      if (window.location !== 'file:///android_asset/www/confirmation.html') 
      { 
       window.location = "file:///android_asset/www/confirmation.html"; 
      } 
    }); 
} 

Мне кажется, что если window.location ничего, кроме file:///android_asset/www/confirmation.html, то он должен идти к file:///android_asset/www/confirmation.html. Если это уже на этой странице, ничего не должно произойти.

Но, что происходит, это то, что он перезагружает file:///android_asset/www/confirmation.html снова и снова без остановки.

Немного поиска в Интернете показывает, что в контексте Android устройства, следует использовать navigator.app.loadUrl() вместо window.location, но этот код еще петли:

function onDeviceready() 
{ 
    window.plugins.webintent.getUri(function(url) 
    { 
      alert("window location is: " + window.location); 
      if (window.location !== 'file:///android_asset/www/confirmation.html') 
      { 
       navigator.app.loadUrl("file:///android_asset/www/confirmation.html"); 
      } 
    }); 
} 

Как остаться на file:///android_asset/www/confirmation.html, если я уже на file:///android_asset/www/confirmation.html, когда я прохожу через мой код onDeviceready?

+0

В инструкции if у вас есть '! ==', это должно быть '! ='. Я сомневаюсь, что это проблема. – ClaireG

ответ

4

window.locationan object, а не строка, так что сравнение не будет работать.

Может попробовать window.location.href != 'http://....'

Где путаница происходит от том, что несмотря на то, что это объект, вы можете присвоить строку к нему (изменить URL).

+0

ahh .. избили меня до этого. – user1600124

+0

Как и в заметке, теперь, когда я использую 'window.location.href','! == 'работает так же, как'! = '. Я иду с '! ==', потому что, если я этого не делаю, Netbeans жалуется на меня предупреждениями. – Questioner

+0

Было ли это решением? Если бы вы могли пометить его как ответ? Спасибо! – MBillau

0

Я не уверен, что window.location всегда будет возвращать то, с чем вы сравниваете. Это, возможно, лучше бы сравнить с подстроки URL вместо всего пути:

if (document.location.href.indexOf('onfirmation.html') > -1) 
{ 
    navigator.app.loadUrl("file:///android_asset/www/confirmation.html"); 
} 

Кроме того, как отметил Тило, window.location является объектом, а не строка - а просто «==» вместо «===» будет работать там, как я полагаю :)

0
function onDeviceready() 
{ 
    window.plugins.webintent.getUri(function(url) 
    { 
      var activePage = $.mobile.activePage.attr("id"); 

    if(activePage!="confirmation")// confirmation is page id of confirmation.html page 
     { 

     $.mobile.changePage('confirmation.html'); 
     // confirmation.html is not in same folder then put '../foldername/confirmation.html' 

     } 
    }); 
} 
+0

Требуется ли для этого решения jQuery mobile? – Questioner

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