0

在我的 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.htmlonDeviceready

4

3 回答 3

4

window.location一个对象,而不是一个字符串,所以比较不起作用。

也许试试window.location.href != 'http://....'

令人困惑的地方在于,即使它是一个对象,您仍然可以为它分配一个字符串(以更改 URL)。

于 2013-09-06T08:28:21.650 回答
0

我不确定 window.location 是否会始终返回您要比较的内容。与 URL 的子字符串而不是整个路径进行比较可能会更好:

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

此外,正如 Thilo 所指出的,window.location 是一个对象,而不是一个字符串 - 但我猜一个简单的 "==" 而不是 "===" 也可以在那里工作:)

于 2013-09-06T08:28:48.893 回答
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'

       }
    });
}
于 2013-09-06T08:43:52.487 回答