在我的Phonegap Android应用中,我有这个Javascript代码:
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 :(得分:4)
window.location
为an object,不是字符串,因此无法进行比较。
也许试试window.location.href != 'http://....'
如果混淆来自于即使它是一个对象,你仍然可以为它分配一个字符串(以更改URL)。
答案 1 :(得分:0)
我不确定window.location将始终返回您所比较的内容。也许更好的想法是比较URL的子字符串而不是整个路径:
if (document.location.href.indexOf('onfirmation.html') > -1)
{
navigator.app.loadUrl("file:///android_asset/www/confirmation.html");
}
另外,正如Thilo所指出的,window.location是一个对象,而不是一个字符串 - 但是一个简单的“==”而不是“===”也会在那里工作,我想:)
答案 2 :(得分: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'
}
});
}