javascript - 为什么 onDeviceReady 中的 if() 语句会循环?

标签 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/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 代码时?

最佳答案

window.locationan object ,不是字符串,因此比较不起作用。

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

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

关于javascript - 为什么 onDeviceReady 中的 if() 语句会循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18653194/

相关文章:

javascript - 是否有可能在 Promise.all 中捕获所有被拒绝的 promise ?

android - CursorIndexOutOfBoundsException 请求索引 0,大小为 0

windows - 使用命令行构建 phonegap windows8 项目

javascript - YUI压缩器用双引号替换单引号的原因是什么?

javascript - TypeScript 或 JS-如何将一个元素及其所有子元素选择到 HTMLCollection 中?

javascript - 我如何进行同步 ReactDOM.render

android - 服务绑定(bind)链

android - 从大型 Android 项目中提取和翻译多个 strings.xml 文件的最佳方法

ios - 查找移植到 ios 的 ionic 应用程序的 xcode 项目名称以启动多个模拟器

cordova - 如何向 Visual Studio Cordova 项目添加插件