Javascript ondevice ready何时开始,如何应用从中获得的变量?
在我的Phonegap Android应用程序中,我有以下Javascript代码: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
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
的任何地方,它有时根本不会执行(或者至少在我可以预测或理解的条件下不会执行),而且变量也不会被设置
最后,我想做的是:
window.location=confirmation.html
confirmation.html
表单的两个字段中填入我从WebIntent获取的URL中获得的两个变量我如何从Webintent调用中获取数据,根据数据内容切换页面,然后在新页面上使用这些数据?我没有专门使用Webintent插件,但是如果我正确理解您的描述,我认为您遇到了一个问题,您在头部或身体中运行一些JavaScript按您所需的方式配置页面。但该代码取决于onDeviceready()中发生的情况。PhoneGap认为可以随时异步调用onDeviceready()。通常会快速调用,但快速是一个相对术语 您可能需要的是该异步代码以某种方式触发所需的代码。JQuery提供了$.Deferred()对象,您可能会发现该对象很有帮助。您可以设置一个Deferred,您可以使用Deferred.done()添加其他代码,当它运行ondevicerady()时,解析该对象,然后运行回调 我用它来允许OnDevicerady()之类的东西触发我的应用程序中的一系列其他行为,我可能不想将这些行为构造成一个大函数