Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ondevice ready何时开始,如何应用从中获得的变量?_Javascript_Android_Cordova - Fatal编程技术网

Javascript ondevice ready何时开始,如何应用从中获得的变量?

Javascript ondevice ready何时开始,如何应用从中获得的变量?,javascript,android,cordova,Javascript,Android,Cordova,在我的Phonegap Android应用程序中,我有以下Javascript代码: function onDeviceready() { window.plugins.webintent.getUri(function(url) { alert("WebIntent Fired Up! URL is " + url); if (url.substring(0, 37) === "https://xxxxxxx.com/confirmation.h

在我的Phonegap Android应用程序中,我有以下Javascript代码:

function onDeviceready()
{
    window.plugins.webintent.getUri(function(url)
    {
        alert("WebIntent Fired Up! URL is " + url);
        if (url.substring(0, 37) === "https://xxxxxxx.com/confirmation.html")
        {
            alert("intent matched!");
            var params = url.substr(url.indexOf("?") + 1);
            params = params.split("&");
            var verificationData = params[0].split("=");
            var emailData = params[1].split("=");
            launchLinkEmail = emailData[1];
            launchLinkVerification = verificationData[1];
            alert("verification is " + launchLinkVerification);
            alert("email is " + launchLinkEmail);
        }
    });
}

$(document).ready(function() {
    document.addEventListener('deviceready', onDeviceready, true);
});
问题在于,变量
launchLinkVerification
launchLinkEmail
似乎是在页面加载和Javascript完成后设置的,因此当我尝试在任何我想使用它们的地方调用它们时,它们的值都是空的。警报总是显示我想要的信息,但是如果我试图在HTML页面中的任何位置显示它们,或者根据它们的值设置条件,这两者都不起作用

另一方面,似乎如果我使用
window.plugins.webintent.getUri(函数(url)
而不是
ondevicerady
的任何地方,它有时根本不会执行(或者至少在我可以预测或理解的条件下不会执行),而且变量也不会被设置

最后,我想做的是:

  • 从WebIntent捕获的URL获取数据

  • 如果来自WebIntent的数据符合某些条件,则使用
    window.location=confirmation.html

  • confirmation.html
    表单的两个字段中填入我从WebIntent获取的URL中获得的两个变量


  • 我如何从Webintent调用中获取数据,根据数据内容切换页面,然后在新页面上使用这些数据?

    我没有专门使用Webintent插件,但是如果我正确理解您的描述,我认为您遇到了一个问题,您在头部或身体中运行一些JavaScript按您所需的方式配置页面。但该代码取决于onDeviceready()中发生的情况。PhoneGap认为可以随时异步调用onDeviceready()。通常会快速调用,但快速是一个相对术语

    您可能需要的是该异步代码以某种方式触发所需的代码。JQuery提供了$.Deferred()对象,您可能会发现该对象很有帮助。您可以设置一个Deferred,您可以使用Deferred.done()添加其他代码,当它运行ondevicerady()时,解析该对象,然后运行回调

    我用它来允许OnDevicerady()之类的东西触发我的应用程序中的一系列其他行为,我可能不想将这些行为构造成一个大函数