Javascript 为什么在onDeviceReady循环中使用if()语句?
在我的Phonegap Android应用程序中,我有以下Javascript代码:Javascript 为什么在onDeviceReady循环中使用if()语句?,javascript,android,cordova,Javascript,Android,Cordova,在我的Phonegap Android应用程序中,我有以下Javascript代码: function onDeviceready() { window.plugins.webintent.getUri(function(url) { alert("window location is: " + window.location); if (window.location !== 'file:///android_asset/www/
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
当我通过我的ondevicerady
代码?窗口时。位置是,而不是字符串,因此无法进行比较
也许可以尝试window.location.href!='http://....“
混淆的地方在于,即使它是一个对象,您仍然可以为它分配一个字符串(以更改URL)。窗口。位置是,而不是字符串,因此无法进行比较
也许可以尝试window.location.href!='http://....“
混淆的地方在于,即使它是一个对象,您仍然可以为它分配一个字符串(以更改URL)。我不确定window.location是否总是返回您要比较的内容。比较URL的子字符串而不是整个路径可能更好:
if (document.location.href.indexOf('onfirmation.html') > -1)
{
navigator.app.loadUrl("file:///android_asset/www/confirmation.html");
}
此外,正如Thilo所指出的,window.location是一个对象,而不是一个字符串-但是一个简单的“==”而不是“==”也可以在那里工作,我想:)我不确定window.location是否总是返回您正在比较的内容。比较URL的子字符串而不是整个路径可能更好:
if (document.location.href.indexOf('onfirmation.html') > -1)
{
navigator.app.loadUrl("file:///android_asset/www/confirmation.html");
}
此外,正如Thilo所指出的,window.location是一个对象,而不是一个字符串-但是一个简单的“==”而不是“==”也可以在那里工作,我想:)在if语句中,您有“!==”,它应该是“!=”。我怀疑这就是问题所在。在if语句中,您有“!=”,它应该是“!=”。我怀疑这就是问题所在。请注意,现在我正在使用window.location.href
,==代码>与一样有效=代码>。我支持==代码>因为如果我不这样做,Netbeans会向我发出警告。这就是解决方案吗?如果是的话,你能把它标记为已回答吗?谢谢!请注意,现在我正在使用window.location.href
,==代码>与一样有效=代码>。我支持==代码>因为如果我不这样做,Netbeans会向我发出警告。这就是解决方案吗?如果是的话,你能把它标记为已回答吗?谢谢!此解决方案是否需要jQuery mobile?此解决方案是否需要jQuery mobile?