Javascript 为什么在onDeviceReady循环中使用if()语句?

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/

在我的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
当我通过我的
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?